我一直在尝试使用条件获取firestore文档ID。比如,如果一个文档有它的secret_code字段abcd12,获取文档的id。我一直试图这样做与Node.js,但它似乎没有工作。代码返回{Promise}
我想我对他们()还不够了解。
async function getIdFromSecretCode(secret_code) {
doc_id=0
await userCollection
.where("secret_code", "==", secret_code)
.get()
.then(function (querySnapshot) {
querySnapshot.forEach(function (doc) {
// doc.data() is never undefined for query doc snapshots
doc_id = doc.id;
// console.log(doc_id);
//console.log(doc.id, " => ", doc.data());
});
});
return doc_id;
}
var t= getIdFromSecretCode("ABCD")
console.log(t)
o/p为:'
PS E:socketio-unity-main> node mserver.js
Promise { <pending> }
'我想让它返回文档id,比如"1xccecefgrf">
getIdFromSecretCode
是async
函数,因此它将始终返回一个承诺。你不能期望将来的结果现在可用,所以你需要接受承诺,也在getIdFromSecretCode
的主调用中。
而且,这个承诺目前还没有解析成任何有用的东西,所以你必须稍微调整一下代码:
async function getIdFromSecretCode(secret_code) {
const snapshot = await userCollection
.where("secret_code", "==", secret_code)
.get();
return snapshot.docs[0]?.doc_id;
}
getIdFromSecretCode("ABCD").then(t => {
console.log(t);
});