我创建了此功能:
async function getRoomTempFromRoomId(roomId) {
const querySnapshot = await db.collection("sensors").where("room", "==", roomId).where("type", "==", "temperature").limit(1).get();
var values = []
values = querySnapshot.docs.map((doc) => { return doc.data().value });
return values[0];
}
现在,当我使用console.log(await getRoomTempFromRoomId("1234"))
调用此函数时,出现以下错误:
SyntaxError: await is only valid in async function
at new Script (vm.js:79:7)
at createScript (vm.js:251:10)
at Object.runInThisContext (vm.js:303:10)
at Module._compile (internal/modules/cjs/loader.js:657:28)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
⚠ Your function was killed because it raised an unhandled error.
相同的代码可用于其他Firebase项目
答案 0 :(得分:1)
您没有在问题中显示它,但是包含对await getRoomTempFromRoomId
的调用的函数本身未标记为async
。仅在紧随其后的函数是await
函数时,才能使用async
。并不是说,如果await在异步函数内部的匿名函数中仍然无法工作,因为回调函数本身不是异步的。