【问题标题】:Firebase insert data using Nodejs APIFirebase 使用 Nodejs API 插入数据
【发布时间】:2016-04-09 15:19:55
【问题描述】:

我正在尝试使用 Firebase 和 Nodejs 编写 Hello World 类的基本应用程序。

应用程序代码

#cat app.js

var express = require('express');
var Firebase = require('firebase');
var app = express();
app.get('/',function(req,res) {
  f(); 
  res.send("success");
});

app.listen(3000, function () {
  console.log('Example app listening on port 3000!');
});

  var onComplete = function(error) {
  if (error) {
    console.log('Synchronization failed');
  } else {
    console.log('Synchronization succeeded');
  }
};

function f() {
var ref = new Firebase("https://dazzling-torch-XXXXX.firebaseio.com");
ref.set({
  location: {
    city: "San Francisco",
    state: "California",
    zip: 94103
  }
},onComplete);
ref.child("location/zip").on("value", function(snapshot) {
console.log(snapshot.val());  // Alerts "San Francisco"
});
}

库版本 -

npm --version && node --version && firebase --version
1.3.6
v0.10.42
2.2.1

节点命令-

  1. node app.js
  2. 打开浏览器http://localhost:3000/

调试器输出

p:0: Making a connection attempt  
c:0:17: Connection created  
c:0:17:0 Websocket connecting to wss://dazzling-torch-XXXX.firebaseio.com/.ws?v=5  
c:0:17:0 WebSocket error.  Closing connection.  
c:0:17:0 Network error: wss://dazzling-torch-XXXX.firebaseio.com/.ws?v=5: getaddrinfo ESRCH  
c:0:17:0 WebSocket is closing itself  
c:0:17:0 Websocket connection was disconnected.  
c:0:17: Realtime connection failed.  
c:0:17: Closing realtime connection.  
c:0:17: Shutting down all connections  
p:0: data client disconnected  
p:0: Trying to reconnect in 17797.816018858393ms  

但它不会更新 firebase 数据。我正在使用默认的安全规则。

谢谢 帕里

【问题讨论】:

  • 任何错误信息?当你向/路由发出请求时,你会得到什么?
  • ref.set() 采用可选的第二个回调函数,在出现任何错误时将调用该函数(参见the docs for info)。设置它并记录错误可能会提示正在发生的事情。
  • 感谢您的回复。我添加了调试器。调试输出 - c:0:2: Connection created c:0:2:0 Websocket connected to wss://dazzling-torch-1380.firebaseio.com/.ws?v=5 c:0:2:0 WebSocket error .关闭连接。 c:0:2:0 网络错误:wss://dazzling-torch-1380.firebaseio.com/.ws?v=5: getaddrinfo ESRCH c:0:2:0 WebSocket 正在关闭自己 c:0:2: 0 Websocket 连接已断开。 c:0:2:实时连接失败。 c:0:2:关闭实时连接。 c:0:2: 关闭所有连接 p:0: 数据客户端断开
  • 在主帖中为设置和调试器输出添加了 onComplete 回调函数。谢谢
  • 不是一个真正的答案,但我的步骤的输出如下。

标签: node.js firebase


【解决方案1】:

我刚刚在节点 v0.10.37 和 firebase 2.4.2 上运行(这些确实是唯一重要的版本),它立即连接并写入数据。

node app.js
Example app listening on port 3000!
p:0: Browser went online.
0: set {"path":"/36518762","value":{"location":{"city":"San Francisco","state":"California","zip":94103}},"qh":null}
p:0: Buffering put: /36518762
p:0: Listen called for /36518762/location/zip default
event: /36518762/location/zip:value:94103
94103
p:0: Making a connection attempt
c:0:0: Connection created
c:0:0:0 Websocket connecting to wss://stackoverflow.firebaseio.com/.ws?v=5
c:0:0:0 Websocket connected.
c:0:0: Reset packet received.  New host: s-usc1c-nss-158.firebaseio.com
c:0:0: Shutting down all connections
c:0:0:0 WebSocket is being closed
c:0:0:0 Websocket connection was disconnected.
c:0:0:1 Websocket connecting to wss://s-usc1c-nss-158.firebaseio.com/.ws?v=5&ns=stackoverflow
c:0:0:1 Websocket connected.
c:0:0: Realtime connection established.
p:0: connection ready
p:0: reportStats {"c":{"sdk.js.2-4-2":1}}
p:0: {"r":1,"a":"s","b":{"c":{"sdk.js.2-4-2":1}}}
p:0: Listen on /36518762/location/zip for default
p:0: {"r":2,"a":"q","b":{"p":"/36518762/location/zip","h":""}}
p:0: {"r":3,"a":"p","b":{"p":"/36518762","d":{"location":{"city":"San Francisco","state":"California","zip":94103}}}}
p:0: from server: {"r":1,"b":{"s":"ok","d":""}}
c:0:0: Primary connection is healthy.
p:0: handleServerMessage d {"p":"36518762/location/zip","d":94103}
p:0: from server: {"r":2,"b":{"s":"ok","d":{}}}
p:0: listen response {"s":"ok","d":{}}
p:0: from server: {"r":3,"b":{"s":"ok","d":""}}
p:0: p response {"s":"ok","d":""}
Synchronization succeeded

看起来您的网络套接字在此之前就被拒绝了。您可能需要检查客户端和 Firebase 服务器之间的代理。在不同的网络上尝试,诸如此类。

  • 试试the diagnostic page
  • ping INSTANCE.firebaseio.com
  • tracert INSTANCE.firebaseio.com
  • 运行 this curl command,最后替换您的 Firebase URL(不要忘记 .json!)。
  • 尝试不同网络上的不同计算机

请注意,这些只是帮助您解决连接问题的步骤。

【讨论】:

  • 感谢弗兰克,您的步骤确实有所帮助。这是我的互联网提供商的问题。我已经启动了安装了 node.js 的 AWS 实例。我的程序在 aws 实例上运行没有任何错误。
  • 我试图支持你的答案,但由于我没有足够的分数,我无法做到。 :(。
猜你喜欢
  • 2017-10-08
  • 2021-10-03
  • 2020-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多