我正在学习expressjs + mongo。我想在用户使用护照通过Steam登录后检查,如果他的数据已经在数据库中,如果不是为他创建记录。
为此,我在架构中创建了一个静态方法。不幸的是,我无法从里面拯救。
TypeError:Object#没有方法'create'
SteamAccountSchema.statics.checkAccount = function(identifier){
this.findOne({ 'identifier' : identifier }, function(err, account){
if(err) throw err;
console.log("Checking account:" + account)
if(account) {
console.log("user already in db")
return true
} else {
console.log("Creating new user account")
this.create({
name : 'username',
identifier: identifier
}, function(err){
if(err) throw err;
// if (err) return done(err);
return false
});
}
});
}
答案 0 :(得分:2)
只需缓存此对象即可。即在下面的代码中 self 指向您需要的内容:
SteamAccountSchema.statics.checkAccount = function(identifier){
var self = this;
this.findOne({ 'identifier' : identifier }, function(err, account){
if(err) throw err;
console.log("Checking account:" + account)
if(account) {
console.log("user already in db")
return true
} else {
console.log("Creating new user account")
self.create({
name : 'username',
identifier: identifier
}, function(err){
if(err) throw err;
// if (err) return done(err);
return false
});
}
});
}