使用ExpressJS / Mongoose更新MongoDB中的值

时间:2014-01-06 19:00:22

标签: express mongoose

我是Node.js / Express / MongoDB和MVC方法的新手,我遇到了一些麻烦。我想要做的是将用户最近的登录时间保存到MongoDB。在进行原型设计时,我决定在用户​​登录时查看是否可以将属性dummy更新为值“dummy”。这是来自model / user.js的用户架构:

var Mongoose = require('mongoose');
var Schema = Mongoose.Schema;
var Types = Mongoose.Types;

var sUser = new Schema({
    name : String,
    hash : String,
    salt : String,
    dummy: String
});

sUser.virtual('password').set(function(pass) {
    //TODO
    this.hash = pass;
});

var mUser = Mongoose.model('user', sUser);
module.exports  = mUser;

我没有写这段代码,我正试图从中学习。我尝试了一些没有成功的事情。首先,我想也许我可以使用模型中的sUser.dummy.set(...)更新虚拟。当我在mongoHQ上检查我的托管数据库时,我甚至没有看到虚拟属性。接下来,当发生POST时,我尝试摆弄在control / user.js中执行的代码。我认为我可以在创建用户时更新虚拟,但没有运气。以下POST处理代码的片段:

app.post("/user", function(req, res, next) {
        var u = new User(req.body);
        u.save(function(err) {
            if (err) {
                next(err);
                return;
            }

            req.session.user = u.toObject();

            if(req.accepts('html')) {
                console.log('redirect');
                res.redirect(302, '/cmd');
            } else {
                console.log(u);
                res.json(201, u);
            }
        });
    });

在我继续前进之前,我希望有人能指出我正确的方向。

用户登录时更新虚拟字段的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

我做了两件事来解决这个问题。首先,我删除了我试过鹰建议和宾果游戏的所有文件。真正奇怪的是,在从馆藏中删除文件之前,我尝试了鹰所建议的,并且没有运气。