如何修复updateOne上的猫鼬严格模式错误?

时间:2018-10-08 12:26:26

标签: mongodb mongoose mongoose-schema strict express-router

我有一个这样的模型:

猫鼬模式

var LinkedinUpdateSchema = new mongoose.Schema({
  likes:{values:[PersonSchema],
    _total: Number},
  numLikes: Number,
  timestamp: Number,
  updateComments:{
    values:[CommentSchema],
    _total: Number
  },
  updateContent:{
    companyStatusUpdate:{
      share:{
        comment: String,
        timestamp: Number
      }
    }
  },
});

路由器

  router.post('/:type',function(req,res,next){
  if(cutFilename.includes(req.params.type)){
    var object = require('./models/'+req.params.type);
    object.UpdateOne(req.body,req.body,{upsert:true,strict:false},function(err,object){
      if(err) console.log(err)
      res.json(object);
    })
  }else{
    res.json('error: type: '+ req.params.type + 'not found !');
  }
});

所以我试图实现一个不允许重复的帖子功能,所以我在updateOne中找到了{upsert:true}。直到我不得不拨打电话以过滤掉一些数据之前,这一直很好。所以我得到了一批数据,而我只想获取适合模型的数据。

但是由于不是在模型中定义了所有内容,所以出现了StrictMode错误。而当我禁用strictMode时,我会获得甚至在模型中未定义的所有数据。

此事件的证据

enter image description here

如您在此处看到的

,未定义isCommentable,islikable和liked。而且我知道这是因为我放了{strict:false},但是如果我不添加它,则不会添加任何数据,并且会出现以下错误:

  

{StrictModeError:路径“ updateType”不在架构中,严格模式为true,upsert为true

所以我想知道如何在不向模型添加任何内容或使用{strict:false}的情况下解决此问题。

希望任何人都可以帮助我,还有其他必要的信息:将其命名,我将对其进行编辑。

0 个答案:

没有答案