我在调用我正在处理的项目中附加到架构的方法时遇到一些困惑。我本质上是从数据库访问文档,并尝试将我存储的散列密码与用户在登录时提交的密码进行比较。然而,当我尝试比较密码时,我附加到模式的方法对象的方法却找不到。它甚至不会向我抛出错误,告诉我没有这样的方法。这是我在架构上设置方法的地方:
var Schema = mongoose.Schema;
var vendorSchema = new Schema({
//Schema properties
});
vendorSchema.pre('save', utils.hashPassword);
vendorSchema.methods.verifyPassword = utils.verifyPassword;
module.exports = mongoose.model('Vendor', vendorSchema);
Run Code Online (Sandbox Code Playgroud)
我用作比较方法的函数是我创建的实用程序函数,名为 verifyPassword,它保存在实用程序文件中。该函数的代码在这里:
verifyPassword: function (submittedPassword) {
var savedPassword = this.password;
return bcrypt.compareAsync(submittedPassword, savedPassword);
}
Run Code Online (Sandbox Code Playgroud)
我尝试像这样验证密码:
var password = req.body.password;
_findVendor(query)
.then(function (vendor) {
return vendor.verifyPassword(password);
});
Run Code Online (Sandbox Code Playgroud)
我已经向猫鼬承诺了蓝鸟的承诺,如果这有什么区别的话。我已经尝试了很多方法,但找不到任何答案来解释为什么当我尝试调用这个我认为已附加架构的方法时什么也没有发生。任何帮助将不胜感激。
我正在使用AWS DynamoDB DocumentClient查询我的DynamoDB表。在我的表中,我有一个名为“ _id”的属性,该属性为每个条目保留唯一的ID。当我尝试基于此ID查询记录时,最终收到一条错误消息:“无效的KeyConditionExpression:语法错误;令牌:\“ _ \”,附近:\“ _ id \”“。进行此查询的代码如下。
function findById(id) {
//Build query
var params = {};
params.TableName = "recordDev";
params.IndexName = "_id";
params.KeyConditionExpression = '_id = :id';
params.ExpressionAttributeValues = {
':id': id
};
return DynamoDB
.query(params).promise()
.then(function(records) {
return records.Items[0];
})
.catch(function(error) {
return Promise.reject(error);
});
};
Run Code Online (Sandbox Code Playgroud)
在为DynamoDB构建查询参数时,是否缺少有关使用“ _”的内容?我曾尝试查找类似的错误,但是无法找到与我的情况类似的任何错误。