gpt4 book ai didi

node.js - 为什么我的 Mongoose 架构缺少其中一个字段?

转载 作者:太空宇宙 更新时间:2023-11-03 22:54:12 24 4
gpt4 key购买 nike

这是我的架构:

var RegionSchema = new Schema({
"metadata": {
"type": String,
"name": String,
"children": [{
"name": String,
"type": String
}],
"parent": Schema.ObjectId
},

"data": [DataContainer]
});

这是我正在编写的单元测试,其中我存储了带有一些空值的该对象的实例:

describe('Region with no data', function() {
it('Should save without error', function(done) {
var emptyRegion = new Region({
"metadata": {
"type": "City",
"name": "San Diego",
"children": [],
"parent": null
},

"data": []
});

emptyRegion.save(function(err, saved) {
console.log(saved)
if (err) throw err;
if (saved.metadata.name === "San Diego")
done();
})
});
});

但是,当我尝试打印保存的内容时,我得到:

{ __v: 0, _id: 551cd261cc55c5ff48c8150b, data: [] }

为什么我的元数据对象没有保存?即使在 save 调用之前,emptyRegion 看起来也像这样。我是否没有正确定义我的元数据

最佳答案

令人讨厌的罪魁祸首是元数据子文档中的type字段。 Mongoose 将其解释为元数据的类型为 String 并具有一堆不相关的属性。将您的架构定义更改为以下内容,它应该可以工作:

var RegionSchema = new Schema({
"metadata": {
"type": {"type": String},
"name": String,
"children": [{
"name": String,
"type": {"type": String}
}],
"parent": Schema.ObjectId
},

"data": [DataContainer]
});

或者,为您的类型字段使用不同的名称。

关于node.js - 为什么我的 Mongoose 架构缺少其中一个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29405543/

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