gpt4 book ai didi

node.js - Mongoose 正在从数组中的嵌入文档中删除空对象

转载 作者:可可西里 更新时间:2023-11-01 09:56:18 24 4
gpt4 key购买 nike

注意下面的代码,它显示了一个包含 2 个数组的模式,一个被配置为来自类型:

[
mongoose.Schema.Types.Mixed
]

并且一个被配置为来自类型:

[
{
value: mongoose.Schema.Types.Mixed
}
]

代码如下:

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');
var schema = new mongoose.Schema({
withSchema: [{
value:mongoose.Schema.Types.Mixed}
],
withoutSchema: [mongoose.Schema.Types.Mixed],
} , {minimize: false});
var Tweak = mongoose.model('tweak', schema );

我使用相同的数据更新文档:

var data = { 
"withSchema" : [ { "value": { a:"221", b:{} } } ],
"withoutSchema" : [ { "value": { a:"221", b:{} } } ]
}
Tweak.findByIdAndUpdate("545680170960023a185ea77e", data, function(err, doc){
console.log(doc);
//{
// "withSchema" : [ { "value": { a:"221" } } ],
// "withoutSchema" : [ { "value": { a:"221", b:{} } } ]
//}
});

如何防止 b:{} 被删除?

编辑:

事实证明只有当数组中有 embeddedDocument 时才会发生这种情况。

最佳答案

从数组中删除空对象 - 是由架构的最小化选项引起的 - 默认为“true”。 Erken 在上面被否决的答案的评论中回答了这个问题 - 将其作为一个单独的答案,以便人们可以找到它。

可以在模式中重写为“false”——然后它会将空对象保存在数组中

var schema = new Schema({ name: String, inventory: {} }, { minimize: false });

来自 http://mongoosejs.com/docs/guide.html#minimize

关于node.js - Mongoose 正在从数组中的嵌入文档中删除空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26703742/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com