伙计们,如何在mongoose save()之前将null设置为mongo db必填字段设置为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----
}
})
答案 0 :(得分:0)
在模式中使用default:{}
,因此,如果没有传递任何值,则在保存文档时将使用默认的空对象。
您的架构应为:
a = new Schema({
conn : {type: Object, required: true , default:{}}
});
在检查记录时,您可以检查conn对象的长度,如果对象长度为0,则意味着db中不存在键/值对。
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
}
答案 1 :(得分:0)
是的,这是很有可能的,但是您不应该指定null
值,而应该忽略一个字段,换句话说,不应在MongoDB文档中指定该字段。解决方案是,您只需添加sparse
索引。
我不知道它是否适用于required
标记,但它适用于unique
字段,可以确保您可以参考sparse
a = new Schema({
conn : {
type: Object,
unique: true,
sparse: true
}
});