gpt4 book ai didi

node.js - 包含 'ref' 但未指定类型的 Mongoose 模型属性是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 02:02:44 24 4
gpt4 key购买 nike

对 Mongoose 非常陌生——我正在处理一个现有的项目,并被赋予了更改一些模型属性的任务。我知道如果模型包含这种类型的属性

postedBy: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}

此属性引用另一个模型/架构,要访问该链接的模型/架构,需要填充它才能访问此属性。

但是在我正在审查的代码中(我没有编写)有很多这种类型的属性

contentTypes: [{ ref: 'ContentType' }],
source: { ref: 'Source',required: true },

其中引用了另一个架构,但没有类型。这是同一种关系,并且隐含了 id 吗?这是子文档吗?

作为一个附加问题:如果在模型中我想引用链接模型(或架构)的属性,我是否需要首先填充?也就是说,如果它是一个子文档,我可以只使用点符号,但如果它是一个“链接”文档,我不确定。

最佳答案

答案是模型模式并不是独立存在的,而是传递给模型“工厂”,从而为它们提供所需的属性类型。

因此,来自该工厂的以下代码片段(如下)。我查看了 mongoose-autopopulate 的文档,但不明白 autopopulate=true 的含义。

new: function(name, properties, statics, methods, schemaMods) {
// Add default definition to properties with references and load reference schemas
Object.keys(properties).forEach(function(key) {
var modifiedProperty = (property) => {
if (property.ref) {
property.autopopulate = true;
property.type = mongoose.Schema.Types.ObjectId;
}

return property;
};

if (Array.isArray(properties[key]) && properties[key].length === 1) {
properties[key][0] = modifiedProperty(properties[key][0]);
} else {
properties[key] = modifiedProperty(properties[key]);
}
});

关于node.js - 包含 'ref' 但未指定类型的 Mongoose 模型属性是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45420775/

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