我在用 Mongoose 做一件简单的事情时遇到了一些麻烦,但我被卡住了,我不知道为什么。
我有这个错误Type '{ time: any; value: any; applianceId: any; }' has no properties in common with type 'DeepPartial<Document>'.
在这里您可以找到我的架构:
import * as mongoose from 'mongoose';
const applianceDataSchema = new mongoose.Schema({
applianceId: {type: mongoose.Schema.Types.ObjectId, required: true},
time: {type: Number, required: true},
value: {type: Number, required: true},
});
const ApplianceDataModel = mongoose.model('relationalApplianceData', applianceDataSchema);
export { ApplianceDataModel }
我的插入代码:
const appliance = model.appliances.find(a => a.name == data.appliance); // I find the correct appliance here
const doc = {
time: data.time,
value: data.value,
applianceId: appliance._id // I use the objectId here
};
const applianceDataModel = new ApplianceDataModel(doc); // Error here
我不知道出了什么问题,我想使用 objectId 对象从我的数据引用我的设备。 你能帮我吗?
最佳答案
出现这个错误的原因是applianceId是必需的,而appliance._id将是未定义的,因为你必须等待model.appliances.find(.....)
// add async to the callback function for your endpoint
app.post('/your_url', async (req,res)=>{
const appliance = await model.appliances.find(a => a.name == data.appliance);
if(!appliance) res.status(400).send({error:'appliance not found'});
console.log(appliance._id); // should console the _id
const doc = {
time: data.time,
value: data.value,
applianceId: appliance._id
};
const applianceDataModel = new ApplianceDataModel(doc);
await applianceDataModel.save();
res.send({message:'Appliance has been saved'}
});
关于node.js - Mongoose 类型与 'DeepPartial<Document>' 类型没有共同属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57538123/