【问题标题】:Updating value in MongoDB using ExpressJS/Mongoose使用 ExpressJS/Mongoose 更新 MongoDB 中的值
【发布时间】:2014-01-07 03:30:01
【问题描述】:

我对 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(...) 更新 dummy 。当我检查我在 mongoHQ 上的托管数据库时,我什至没有看到虚拟属性。接下来,我尝试修改在 POST 发生时在 control/user.js 中执行的代码。我以为我可以在创建用户时在那里更新 dummy ,但没有运气。以下 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);
            }
        });
    });

在我走得更远之前,我希望有人能指出我正确的方向。

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

【问题讨论】:

  • 您在保存前尝试过u.dummy = "dummy"; 吗?如果您想从 req.body 设置此属性,请在 HTML 表单中再创建一个输入字段。
  • 我确实尝试过,但没有运气。但是,我从我的收藏中删除了所有文档,然后再次尝试,它成功了! TY

标签: express mongoose


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    • 2018-08-12
    • 2017-10-01
    • 1970-01-01
    相关资源
    最近更新 更多