在其他模式中获取用户详细信息[mongoose]

时间:2016-07-08 15:16:58

标签: angularjs node.js express mongoose

我正在进行平均堆栈开发。我有点卡在我的要求是通过功能发布的地方。我正在尝试构建一个简单的分类广告应用,其中用户添加/更新/删除分类。我能够完成所有这些,但现在我需要在该添加的人员上显示该特定用户的名称。我已经在线研究但无法获得解决方案。

我的架构

var UserSchema = new Schema({
    username: { type: String, required: true, unique: true },
    firstName: { type: String, required: true },
    lastName: { type: String, required: true },
    email: { type: String, required: true, unique: true, lowercase: true },
    phone: { type: Number, min: 10, unique: true },
    hash: String,
    salt: String
});

var ClassifiedSchema = new Schema({
    title: { type: String, required: true, unique: true },
    description: { type: String, required: true, },
    price: { type: Number, required: true },
    created: { type: Date, default: Date.now },
    updated: { type: Date, default: null },
    contact: {
        name: String,
        phone: Number,
        email: String
    },
    image: String,
    user: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }
});

我的路线

router.route('/classifieds')
        .post(function(req, res) {
            var classified = new Classified(req.body);

            classified.save(function(err, classified) {
                if (err)
                    res.send(err);
                res.json(classified);
            });
        })
        .get(function(req, res) {
            Classified.find(function(err, classifieds) {
                if (err)
                    res.send(err);
                res.json(classifieds);
            });
        });

router.route('/register')
        .post(function(req, res) {
            if (!req.body.username || !req.body.password || !req.body.email || !req.body.firstName || !req.body.lastName) {
                return res.status(400).json({message: 'Please fill all the fields!'});
            };

            var user = new User(req.body);
            user.setPassword(req.body.password);

            user.save(function(err, user) {
                if (err)
                    res.send(err);
                res.json({ token: user.generateJWT()});
            });
        });

    router.route('/login')
        .post(function(req, res) {
            if (!req.body.username || !req.body.password) {
                return res.status(400).json({ message: 'Please fill all the fields!' });
            };

            passport.authenticate('local', function(err, user, info) {
                if (err)
                    res.send(err);
                if (user) {
                    return res.json({ token: user.generateJWT() });
                } else {
                    return res.status(401).json(info);
                };
            })(req, res);
        });

我想知道在发布分类广告时如何获取用户名?我知道populate函数,但我已经尝试了它,它似乎不起作用。

更新

我已经添加了我的注册和登录路线,以向您展示护照的使用。

1 个答案:

答案 0 :(得分:0)

如果您有passport之类的身份验证系统将req.user设置为当前登录用户,则:

   .get(function(req, res) {
        Classified.find({user: req.user},function(err, classifieds) {
            if (err)
                res.send(err);
            res.json(classifieds);
        });
    });