我正在做一个注册片,在将数据输入到 mongo 之前进行一些服务器端验证。我对猫鼬很陌生,并且无法将数据返回到完成所有注册过程的方法。
在我的机车控制器中,我有一个方法可以包装所有内容以启动注册过程。
auth = new Authenticator();
auth.signUp(this.req.body);
在我的身份验证对象中,signUp 只是在创建新用户之前验证数据。一项验证是数据库中没有创建重复的电子邮件。
this.signUpUser = function(user) {
if(this.isNotDuplicate(user.email) {
//continue doing whatever needs done to the data afterwards
} else {
response['error'] = True
response['response'] = "duplicate email"
}
}
我正在尝试的一种方法是查找匹配并返回真或假的电子邮件。
this.isNotDuplicate = function(email) {
query = user.findOne({ 'email': email });
query.exec(function(error, user) {
if(error) {
console.log(error);
}
console.log(user);
return (user === null) ? false : true;
});
}
如果我在数据库中传递一封电子邮件,我可以在使用 console.log() 时看到用户,但这不允许我返回任何内容,除非它是机车返回响应对象。但我需要能够继续对数据进行处理。我意识到我这样做可能完全是错误的,所以如果我的设计不好,我需要解释如何将其更改为与 node.js、express 和 locomotive 一起使用。
我已经阅读了 mongoose 的查询文档(http://mongoosejs.com/docs/queries.html)。在他们的示例中,他们使用了 console.log(),但肯定有一种方法可以使用您从其他地方的 mongoose 提取的数据,而不仅仅是在 mongoose 查询中。如果我的设计不好走这条路,建议如何改变它?或者我怎样才能返回来自猫鼬查询的数据或另一个要使用的值?