使用mongoose加载基于id的用户

时间:2013-11-15 11:47:31

标签: mongoose

我正在尝试弄清楚如何在节点应用程序中使用mongoose基于ID加载用户。我来自php / mysql背景,我很难弄清楚如何在node + mongoose中将这一切联系在一起。有人可以帮助我改进/修复这个例子吗?

模型models / user.js

var mongoose = require('mongoose')
    , Schema = mongoose.Schema;

var userSchema = new Schema({
    facebookProfile: {},
    facebookPages: { type: Array },
    created: {type: Date, default: Date.now}
});

userSchema.methods = {
    getManagedPages: function(){
        return this.facebookPages;
    }
}

userSchema.statics = {
    load: function(userid){
            return this.findById(userid);
    }
}
module.exports = mongoose.model('User', userSchema);
控制器controller / user.js中的

var User = mongoose.model("User");
var currentUser = new User();
currentUser = currentUser.load(req.user._id);

我得到的错误是:

  

TypeError:Object {_id:52861322f38d7ded3f000001,创建时间:11月15日星期五   2013 13:27:14 GMT + 0100(CET),facebookPages:[]}没有方法'加载'   在exports.profile

1 个答案:

答案 0 :(得分:1)

检查Mongoose Queries并在用户模型中添加

exports.load(userid, callback){
    var query = User.findOne( {//User is your mongoose.model("User"); variable
            'userid' : userid
        });
        query.select('userId name email');
        query.exec(function(err, result) {
            if (err) {
                // Error
                        callback(err);
            } else {
                if (result.length == 0) {
                    // User not Exists              
                        callback(false, result);
                }
                else {
                    // User Exists. Process result
                }
            }
        });
}

编辑:使用回调更新了代码

更改 currentUser = currentUser.load(req.user._id); 回调函数

currentUser.load(req.user._id, function(err,result){
   if(err){//handle err
   }
   else{
    currentUser = result.userid;
   }
});

注意:它是伪代码