我最近一直在开发一个身份验证系统,如果没有具有给定ID的用户或在具有现有ID的用户中加载,则应该创建新用户。我还已经发现,您可以使用
返回用户是否存在IDUser.count({_id: id}, function (err, count){
if(count > 0){
// User exists, continue with loading data
} else {
// User does not exist, create one
}
});
用户是导出的Mongoose模型mongoose.model('User', UserSchema);
如果我现在在我的app.js中创建了一个函数existWithId(id),它将完美地工作(判断前面提到的代码完全正常 >),但我想将此函数移动到我的user.js模型(其中包含Mongoose / MongoDB代码),以便我只为该特定模型使用它。每当我尝试使用
做到这一点UserSchema.statics.existsWithId = function(id) {
this.count({_id: id}, function (err, count){
return count > 0;
});
}
但是,或类似方法,只要我在app.js中运行它就会返回 undefined 或错误。
注意:我很抱歉,如果这是一个简单甚至是愚蠢的问题,但是考虑到使用Mongoose进行数据库管理,我很新,而且我确实有使用JS的一些经验,我不是一个专业人士。
如果您有任何人需要提供额外的代码来回答问题,请随时问我,我会这样做。此外,我还不能+回答答案,但我总是感谢他们:)
答案 0 :(得分:1)
您的existsWithId
方法异步返回一个值,因此您可以对其进行回调以获得结果,如下所示:
UserSchema.statics.existsWithId = function(id, cb) {
this.count({ _id: id }, function(err, count) {
cb(err, count > 0);
});
}
User.existsWithId("5882c3be5aad09028d4d8b46", function(err, res) {
console.log(res);
});