我正在为IOT类型的应用程序构建一个快速的API。结构是,我有一个带有 latestValue1 和 latestVoltage 值的传感器文档。每个传感器文档还具有读数的集合(例如每小时记录一次)。
Set函数可以很好地更新 latestValue1 和 latestVoltage ,但我正在努力研究如何创建读数集合并向其中添加文档。下面的代码给我 TypeError:document.collection不是函数
app.put('/api/update/:item_id', (req, res) => {
(async () => {
try {
const document = db.collection('sensors').doc(req.params.item_id).set({
latestValue1: req.body.value1,
latestVoltage: req.body.voltage
}, {merge: true});
await document.collection('readings').add({
value1: req.body.value1,
voltage: req.body.voltage
});
return res.status(200).send();
} catch (error) {
console.log(error);
return res.status(500).send(error);
}
})();
});
如何修复上面的代码以将新文档正确添加到读数集中?
答案 0 :(得分:0)
set()
不返回DocumentReference对象。它返回一个您应该等待的承诺。
await db.collection('sensors').doc(req.params.item_id).set({
latestValue1: req.body.value1,
latestVoltage: req.body.voltage
}, {merge: true});
如果要建立对子集合的引用,则应链接调用以到达该子集合。 add()
还会返回一个您应该等待的保证。
await db.collection('sensors').doc(req.params.item_id)collection('readings').add({
value1: req.body.value1,
voltage: req.body.voltage
});
仅供参考,您还可以声明整个快递处理程序函数异步以避免内部匿名异步函数:
app.put('/api/update/:item_id', async (req, res) => {
// await in here
});