Javascript NodeJS,Firestore获得字段
我已经在我的nodejs聊天机器人上设置了firestore。 并成功将Facebook用户ID复制到.doc Name, 并在firestore中的用户ID下设置用户名和其他信息 如何检索此“字段”名称 显示回用户 到目前为止,我得到的是这个Javascript NodeJS,Firestore获得字段,javascript,node.js,firebase,google-cloud-firestore,Javascript,Node.js,Firebase,Google Cloud Firestore,我已经在我的nodejs聊天机器人上设置了firestore。 并成功将Facebook用户ID复制到.doc Name, 并在firestore中的用户ID下设置用户名和其他信息 如何检索此“字段”名称 显示回用户 到目前为止,我得到的是这个 const givename=db.collection('users').doc(''+发送方id).get(“name”); 还没有使用Firestore,但是通过阅读 以下类似的方法应该可以工作(未经测试): 调用get()不会立即返回数据,因为
const givename=db.collection('users').doc(''+发送方id).get(“name”);
还没有使用Firestore,但是通过阅读
以下类似的方法应该可以工作(未经测试):
调用get()
不会立即返回数据,因为数据是异步加载的。而是返回一个promise,该promise在加载数据后解析。这意味着您可以使用await
(如Francisco的回答)或(如果await
不可用)实现then()
方法:
db.collection('users').doc(''+ sender_id).get().then(function(doc) {
console.log(doc.data().name);
});
需要注意的一个常见陷阱是:
doc.data()
仅在回调中可用,不幸的是,这似乎无法解决问题。获取一堆userDoc.data不是函数userDoc.data不是函数谢谢你的评论。还是有点困惑。我得到了NaN的回应。firebase日志中没有显示任何名称。这很奇怪。这意味着什么?编辑。把它擦掉。它是。无论如何。它现在在日志中撬动它,但不允许const givename=“code here”工作。或者这是不可能的?我不知道最后一点是什么意思。但正如我在回答中所说的那样:doc.data()
中的数据只在then()
回调中可用。有关这种编程方式的更多信息,请参见,这在现代JavaScript中非常常见。啊,如果我希望我的代码触发名称,那么它需要在then()中,这样我就可以在需要时使用常量来调用该函数。。真糟糕。我现在就解决这个问题,看看能否找到解决办法:)wait
是ES2017(iirc)中引入的一个关键词。它在节点8和更高版本中可用。如果您想尝试使用它,我建议您在“using await in node.js”上进行一些搜索,因为它们可能会找到比我可以快速分享的更好的解释。
db.collection('users').doc(''+ sender_id).get().then(function(doc) {
console.log(doc.data().name);
});