gpt4 book ai didi

node.js - 方法未定义?无法使用产量

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:03 25 4
gpt4 key购买 nike

我想产生一个过程。但是,我收到错误:您只能产生函数、 promise 、生成器、数组或对象,但传递了以下对象:“未定义”。

不知道为什么。

Mongoose 方法:

UserSchema.methods.comparePassword = function(candidatePassword, cb) {
bcrypt.compare(candidatePassword, this.password, function(err, isMatch) {
if (err){
return cb(err);
}
cb(null, isMatch);
});
};

用法:

yield user.comparePassword(this.request.body.password, function(err, isMatch) {
console.log(isMatch);
});

使用时出现此错误。 user 不为 null 或未定义。

最佳答案

问题是 comparePassword 不返回任何内容,这就是为什么您会收到有关它产生 undefined 的错误。

假设您希望 comparePassword 返回一个 promise 。这意味着您需要将使用回调的 bcrypt.compare() 与 Promise 包装起来,并返回该 Promise:

UserSchema.methods.comparePassword = function(candidatePassword) {
var user = this;
return new Promise(function(resolve, reject) {
bcrypt.compare(candidatePassword, user.password, function(err, isMatch) {
if (err) return reject(err);
resolve(isMatch);
});
});
};

这就是你使用它的方式:

yield user.comparePassword(this.request.body.password); // no callback

关于node.js - 方法未定义?无法使用产量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37908865/

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