重现的步骤:
将您的firebase数据库初始化为:
{
"restaurants" : [ {
"address" : "via Rettifilo, 34 Castelguidone CH Italy",
"title" : "Dama & Dama"
}, {
"address" : "Corso Umberto I, 3 Castelguidone CH Italy",
"title" : "Bar sabatino"
} ]
}
检查您的读/写firebase延迟规则是否
{
"rules": {
".read": true,
".write": true
}
}
执行此js代码:
firebase.inizializeApp(yourJsonConfig)
\*code*\
firebase.database().ref().once('value').then(function(snapshot){
console.log(snapshot.val()); \\ this will print Array(0)
})
预期行为:控制台日志"{'restaurants' ........}"
实际行为:控制台记录"Array(0)"
,即无数据!
我使用firebase js库(版本4.13.1)。我哪里错了?
答案 0 :(得分:1)
您需要使用val()方法返回数据。
const float eRad = 6.5;
static float iter = 0.0;
void drawSphere(void)
{
float x = 0.5;
float y = 0.4;
float z = 0.0;
glMatrixMode(GL_PROJECTION | GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT);
// Draw the Ellipse
glColor3d(1.0, 0.0, 1.0);
glBegin(GL_LINE_STRIP);
for (float i = 0; i <= eRad; i += 0.1)
{
glVertex2f(x*cos(i), y*sin(i));
}
glEnd();
//Draw the Sphere
glColor3d(1.0, 1.0, 0.0);
glPushMatrix();
glTranslatef(x*cos(iter), y*sin(iter), 0);
glutWireSphere(0.15, 30, 30);
glPopMatrix();
glFlush();
}
void animation(void)
{
iter = (iter < 6.5) ? iter+0.0001 : 0.0;
}
void Timer(int value) {
glutTimerFunc(33, Timer, 0);
glutPostRedisplay();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(600, 600);
glutInitWindowPosition(0, 0);
glutCreateWindow("Moving Sphere Test");
glutDisplayFunc(drawSphere);
glutIdleFunc(animation);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glViewport(0, 0, 600, 600);
Timer(0);
glutMainLoop();
}
修改:然后您的问题存在于您未展示的另一段代码中。
选中此示例:http://jsfiddle.net/zgfr91yd/
在控制台日志中:
查看我的数据:
每个餐厅的父母都需要一个独特的钥匙。您可以在Firebase中使用“推送”功能。
答案 1 :(得分:0)
传递给回调的snapshot
参数是DataSnapshot类型的对象。您不应该假设DataSnapshot的JSON格式字符串只包含数据库中该位置的数据。从API文档中可以看出,DataSnapshot中有许多方法功能。
您要做的是在该快照上调用val(),以便从中提取JavaScript值。阅读API文档以进一步了解该对象可能包含的内容。