node.js - 如果对象为空,猫鼬不保存
问题描述
如何不插入空对象,即{ }
在 Mongoose 模式中。
假设 Mongoose 集合如下
let testCollection = mongoose.Schema({
someData:{
type: []
}
在Mongoose集合中插入如下
let emptyObj = { }
new testCollection({
someData: emptyObj
}).save()
如果这段代码执行,猫鼬集合会是这样的
db.somecollection.find().pretty()
{
"someData" : [
{ }
]
}
仅当对象不为空时,如何在此数组中插入对象?
解决方案
如果没有其他字段,可以使用三元组来完成:
const isEmpty = !obj || Object.keys(obj).length;
new testCollection(isEmpty ? { someData: emptyObj } : {}).save()
否则,这可以通过对象扩展和短路评估来完成,以避免重复和额外的临时变量:
new testCollection({
someField: 'value',
...(isEmpty || { someData: emptyObj })
}).save()
推荐阅读
- java - 根据 xpath 元素中其他属性的条件获取属性值
- python - Azure 找不到 python 版本
- angular - AngularTS:首次实现时出现 OAuth 问题 - 错误类型错误:this.logger.error 不是函数
- python - 如何创建一个字典,其中每个键都有 2 个值?
- r - 从 R 中的不同文件的一行中插入时间
- c# - ASP.NET Core WebAPI 崩溃是因为我没有 StaticFileMiddleware?
- android - 导航抽屉的问题
- laravel - 将基督教日历转换为shamsi
- python - 如何将随机数链接到字母表中,不重复
- java - 无法将 ND4j 遮蔽到罐子中