【发布时间】:2020-12-27 06:42:42
【问题描述】:
userSchema.pre('save',async function(next){
//hash the password before saving user to database
next()
})
大家好,我正在尝试理解 mongoose 中的中间件的概念。假设我有一个 userSchema,我在将用户保存到数据库之前运行 pre hook 以散列密码。从表面上看,据我了解,我拥有的上述代码将对密码进行哈希处理(不是这个问题的重要部分),然后调用 next() 来表示该函数已完成。但是,我试图了解事情在幕后是如何运作的。我想知道 next() 是什么?你们能否带我看一个例子,说明一旦代码执行,一切如何从头到尾协同工作,或者以某种方式帮助我更好地理解这个概念?谢谢
【问题讨论】:
-
每当您对数据库执行操作时都会触发 mongoose 中间件,在上面的示例中,每当您对用户集合执行保存操作时,回调函数将在执行保存操作之前执行(因为它是一个前置中间件)。下一个只是意味着不阻止执行并继续执行下一个 mongoose 中间件(如果存在)或您的实际保存操作。你的中间件应该总是调用 next() 否则你的代码会被阻塞。
-
所以我假设实现了 mongoose API,以便在这种情况下调用 next() 对吗?下一个功能是猫鼬给我的。
标签: mongodb mongoose mongoose-schema