【发布时间】:2018-08-08 19:28:07
【问题描述】:
我正在尝试将变量“dish_data”分配给从“dish_ref.get()”返回的数据,该数据返回一个承诺。
let dish_data;
var get_dish_data = dish_ref.get()
.then(doc => {
console.log('doc: ', doc);
console.log('doc: ', doc.data());
dish_data = doc.data();
console.log('dish_data in promise: ', dish_data);
});
console.log('dish_data after promise: ', dish_data);
const num_ratings = dish_data['num_ratings'];
“dish_ref”是 Google Firestore 文档。 “doc”和“doc.data()”的控制台日志分别显示了一个firestore文档和字典数据。控制台日志还显示“dish_data”,其中包含来自“doc.data()”的信息,但在 promise 内但在 promise 之后,“dish_data”未定义。
我尝试过如下创建异步函数...
async function myFunc() {
var get_dish_data = await dish_ref.get();
}
dish_ref.get().then(myFunc);
var dish_data = get_dish_data.data();
但我得到一个语法错误,说函数是一个意外的标记。
【问题讨论】:
-
只要把所有使用promise结果的代码都放在回调里面
-
我决定采用这条路线,但它确实让我的代码更加混乱。我更喜欢使用 async 和 await 但就像我在帖子中写的那样,我不断收到语法错误,经过一番谷歌搜索后,看起来过时的 Node 版本是罪魁祸首,但我使用的是最新版本的 Node,所以我不知道是什么问题。
标签: javascript node.js promise google-cloud-firestore