gpt4 book ai didi

node.js - 在 mongoose pre/save/(serial/parallel) 中间件中绑定(bind)了哪些函数 done/next

转载 作者:搜寻专家 更新时间:2023-10-31 22:31:09 25 4
gpt4 key购买 nike

尝试通过文档/博客(Tim Casewell)了解 mongoose 中间件(预/保存/并行)。

基于 http://mongoosejs.com/docs/middleware.html

var schema = new Schema(..);
schema.pre('save', true, function (next, done) {
// calling next kicks off the next middleware in parallel
next();
doAsync(done);
});

The hooked method, in this case save, will not be executed until done is called by each middleware.

这里绑定(bind)了什么/下一步是什么?你能给出一个完整的例子来说明如何使用它吗?

例如:我使用串行如下:

myModel.save(function(err) {
if (err)
console.error("Error Occured")
else
console.info("Document Stored");
});

Schema.pre('save', function(next) {
if (!self.validateSomething()) {
next(new Error());
} else {
next();
}
});

下一个绑定(bind)到这里的是什么?它需要绑定(bind)到某些东西才能执行吗?我不明白 next/done 指的是哪些功能?

如果您能详细说明我上面的代码的控制流,那将是一个很大的帮助。

------------这只是为了阐述我的理解(不是问题的一部分)--------

   * On executing myModel.save(...)
* Control Flow will be passed to pre/save
* if self.validateSomething() fails,
* Document will not be tried to be saved in DB
* "Error Occurred" will be printed on console
* if validation succeeds,
* Control Flow should be passed to *somewhere* in Mongoose libs
* Document will be tried to save in DB
* On Success, "Document saved" will be printed on the console
* On Failure, "Error Occurred" will be printed on console

最佳答案

它们绑定(bind)到在 Mongoose 内部提供流控制的函数。 Mongoose 依赖hooks-js有关其中间件功能,请参阅源代码以获取更多详细信息。

例如,如果您有多个预保存中间件函数,next 将调用一个函数,该函数将调用下一个预保存中间件或出错时,会将错误传递回您的 保存回调。

使用 done 是一个更高级的流程控制选项,允许多个预保存,例如,中间件一次执行,但在 done 之前不会超过预保存步骤 已在所有中间件函数中被调用。

关于node.js - 在 mongoose pre/save/(serial/parallel) 中间件中绑定(bind)了哪些函数 done/next,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17456106/

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