gpt4 book ai didi

node.js - Mongoose Schema.pre insertMany 中间件

转载 作者:行者123 更新时间:2023-12-05 03:49:15 28 4
gpt4 key购买 nike

我将 mongoose 与 nodeJs 一起使用,并且我正在尝试实现一个在使用 insertMany 时调用的中间件。在 mongoose 文档中根本没有示例,但他们确认 insertMany 模型函数触发以下中间件:insertMany()。

我有一个基本的用户模式,我需要 insertMany 钩子(Hook)来使用 bcrypt 散列密码:

UserSchema.pre('insertMany', async function (err, docs, next) {

try{
docs.map(async function (doc, index) {
// async hash password
doc.password = await User.hashPassword(doc.password);
});

} catch (error) {
console.log(error);
}

next();
});

我不会发布所有架构,因为其余的都有效,包括密码散列和“保存” Hook 。我无法理解为什么在尝试插入许多用户时出现此错误:

next 不是函数

通常我会调用 next() 以继续执行下一个中间件,但在这种情况下它不起作用。如果我删除 next(),代码将不会继续到下一个中​​间件,并且在这两种情况下都不会插入用户。

有人可以帮助我吗?

最佳答案

这是因为你在回调中提供了错误的参数。 Hook 仅适用于“下一个”参数。您需要将回调函数参数从 (err, docs, next) 更改为 (next, docs),它应该适合您。

你可以在这里看到详细信息 https://mongoosejs.com/docs/middleware.html#pre

https://mongoosejs.com/docs/middleware.html#types-of-middleware

关于node.js - Mongoose Schema.pre insertMany 中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64029437/

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