gpt4 book ai didi

javascript - 将逻辑添加到 Mongoose 的 Model ctor 中的最佳实践是什么?

转载 作者:行者123 更新时间:2023-12-02 15:50:21 26 4
gpt4 key购买 nike

假设简单的架构:

var NestedSchema = mongooseSchema({
'id' : Number,
'someData' : String
});

var MySchema = mongoose.Schema({
'exampleField' : [NestedSchema]
};

我想创建模型实例而不为每个 NestedSchema 提供 id,如下所示:

new MySchemaModel({'exampleField' : [{'someData' : 'initial Data'}]});

我知道有 pre-save Hook ,它允许我在保存之前设置 id 字段,但这对我来说还不够,因为我必须操作这些数据(并使用 ids)在我将模型实例保存在 mongo 中之前。所以问题是:是否有好的解决方案可以包含一些 pre-create 函数来初始化在 new 之后立即调用的数据?我正在寻找类似于 java 托管 bean 中的 PostConstruct 方法的东西。

最佳答案

问题最初回答here通过 Valeri Karpov - 非常感谢!

Take a look at the schema.queue function in the api docs, that enables you to queue up functions to execute every time a new document is created. Mongoose uses it internally for hooks but 4.1.0 formally added that to the public facing API

换句话来说,Mongoose 4.1.0 正式支持 schema.queue,它允许钩子(Hook)方法(在特定模式中声明)来初始化链,因此这里的解决方案非常简单:

MySchema.methods.generateIds = function () {
// app logic here
}

// ...and at last
MySchema.queue('generateIds');

它将在ctor调用期间触发generateIds方法!非常简单又有趣。

关于javascript - 将逻辑添加到 Mongoose 的 Model ctor 中的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31895276/

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