如果没有创建文档,请检查文档是否已存在

时间:2013-09-03 19:28:57

标签: node.js mongodb express

我正在学习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
        });
    }
}); 

}

1 个答案:

答案 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
            });
        }
    }); 
}