【发布时间】:2017-11-22 09:52:41
【问题描述】:
我的问题是检查数据库中是否已经存在员工的姓名或电子邮件。他们说在更新前的中间件中这样做很好。我试过了,但它不起作用。
我将(id_of_staff、updatedStaff_info 和 callback_function)传递给更新函数。
这是我的更新功能:
module.exports.updateStaff = function(id, updatedStaff, callback){
var query = {_id: id};
Staff.update(query, updatedStaff, callback);
}
每次调用 Staff.update() 时,都会执行预更新中间件。我在这里想要的是检查名称或电子邮件是否已经存在。问题是,预更新中间件中的名称和电子邮件似乎未定义。
我的预更新中间件:
staffSchema.pre("update", function(next){
var staff = this;
Staff.find({_id:{$ne: staff.id}, $or:[{name: staff.name}, {email: staff.email}]}, function (err, docs) {
if (!docs.length){
next();
}else{
next(new Error("Name or email already exist"));
}
});
});
我得到的结果总是“姓名或电子邮件已经存在”。我试图在控制台日志中打印 staff.name 的值,但它说它未定义。我做对了吗?你能帮我让它工作吗?非常感谢你们。
【问题讨论】:
-
请给你的问题一个更好的标题,一个描述问题的标题。
-
您的问题标题应该描述您遇到的问题或您提出的问题。您是 Mongoose 的新手这一事实是无关紧要的,显然询问您是否可以得到帮助是没有意义的;这就是本网站存在的全部目的。您的标题应清楚地描述问题,使其对搜索结果中的未来读者有意义。
-
也不要在问题标题中使用标签名称。这就是标签的用途。然而,这个问题缺乏关于您作为参数发送的内容以及您实际期望的内容是否应该匹配的详细信息。最可能的原因是给定的条件将始终与您的数据中的某些内容相匹配。由你来表明你认为它不应该。见How to create a Minimal, Complete, and Verifiable example
-
哦,对不起。我确保下次做对。
标签: mongodb validation mongoose