gpt4 book ai didi

node.js - 扩展 Mongoose 模型而不存储所有属性

转载 作者:可可西里 更新时间:2023-11-01 09:36:27 26 4
gpt4 key购买 nike

我正在构建一个基于 Node.js+Express+Mongoose 的 CMS。我想要业务和数据访问方法的抽象层。所以我有包含调用数据库的方法的业务类。

这些调用是直接使用 Mongoose 模型进行的,因此我的逻辑实体是 Mongoose 实体

问题是一些逻辑实体并不总是与其数据库实体相同

例如:我有一个名为“Item”的模型及其属性,这些属性必须存储到数据库中,这很好。现在,我需要一个新属性,一个名为“similar_items”的数组,它最终可以包含其他项目的列表,但我不想将此属性存储在数据库中。

var itemSchema = new Schema({
id: { type: Number, index: true },
name: { type: String }
});

var item = mongoose.model('Item', itemSchema);
var data = new Item();
/* do stuff.... */
data.similar_items = blahblah; //I can't set this property as it doesn't exists!

是否可以使用模式之外的属性扩展 Mongoose 模型?我知道我可以使用 getter 和 setter 定义虚拟属性,但我仍然没有一个“位置”来存储我的数组。

有什么想法吗? 我应该将我的逻辑模型和 Mongoose 模型分开吗?

最佳答案

如果此时您已将 data 用作 Mongoose 实例,请调用 toObject()在其上将其转换为您可以自由修改的普通 JS 对象:

data = data.toObject();
data.similar_items = blahblah;

关于node.js - 扩展 Mongoose 模型而不存储所有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25523688/

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