0

我正在学习 expressjs + mongo。如果不为他创建记录,我想在用户通过 Steam 使用护照登录后检查他的数据是否已经在数据库中。

为此,我在模式中创建了一个静态方法。不幸的是,我无法从里面保存。

TypeError: Object # has no method '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
        });
    }
}); 

}

4

1 回答 1

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
            });
        }
    }); 
}
于 2013-09-03T19:31:26.160 回答