node.js - Mongoose 类型与 'DeepPartial<Document>' 类型没有共同属性

标签 node.js mongodb mongoose

我在用 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/

相关文章:

php - AES 在 PHP 中使用 OpenSSL 加密/在 Node.js 中解密

javascript - 从 npm 包的子文件夹导入

ruby-on-rails - Rails 和 MongoDB 与 MongoMapper

node.js - 将nodejs应用程序部署到gae/se : gcloud app deploy : This deployment has too many files

javascript - gzip 仅以纯文本形式返回 html

python - 对子文档 python Bottle 进行排序

javascript - MongoDB聚合将两个不同的字段合并为一个并获取计数

javascript - Mongoose 模型中的 model 和 model._doc 有什么区别?

javascript - 前端的 new Date() 格式与后端的 new Date() 格式不同

node.js - 使用 mongoose 在单个查询中获取小于 1 个月的所有条目以及大于 1 个月的最新条目