在save()之前将null设置为mongo必填字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在save()之前将null设置为mongo必填字段相关的知识,希望对你有一定的参考价值。

我们怎么能在mongoose save()之前将null设置为mongo db required字段为null;

模式

    a = new Schema({ 
      conn : {type: Object, required: true}
    })

    a.findOne(findQuery, (err, b) => {
      if(err)
        console.log(error);
      if(!b)
        console.log(errMessage);
       b.conn = null;
       b.save((err) => {
       if(err)
        console.log(err)
       -----something else----
       }
})
答案

在架构中使用default:{},因此如果没有传递值,则在保存文档时将采用默认的空对象。

您的架构应该是:

 a = new Schema({ 
      conn : {type: Object, required: true , default:{}}
    });

在检查记录时,可以检查conn对象的长度,如果对象长度为0,则表示数据库中不存在键值对。

if(Object.keys(conn).length==0){
  // conn object is empty , set new key 
   conn.your_key=your_value;
  // save the document
}else{
  // conn object is not empty 
}
另一答案

是的,它很可能,但您不应指定null值,您应该省略一个字段,换句话说,该字段不应在MongoDB文档中指定。解决方案是,你可以添加sparse索引。我不知道它是否适用于required标签但它适用于unique字段肯定你可以参考sparse

 a = new Schema({
  conn : {
     type: Object, 
     unique: true, 
     sparse: true
  }

});

以上是关于在save()之前将null设置为mongo必填字段的主要内容,如果未能解决你的问题,请参考以下文章

Backbone,Node和Mongo错误验证和通信

在 Django 中将模型字段设置为必填

python成语填字并设置难度等级

如何在mongo聚合不起作用的情况下将字符串转换为日期总是返回null?

在 Swift 中为 iOS 设计一个填字游戏网格

如何在 mongo 中使用 .save 方法?