0
我对Node.js/Express/MongoDB和MVC方法非常陌生,并且遇到了一些麻烦。我想要做的是将用户最近的登录时间保存到MongoDB。虽然原型,我决定看看我是否能更新属性假人值“假”,当用户登录下面是模型/ user.js的用户模式:使用ExpressJS/Mongoose更新MongoDB中的值
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中执行的代码。我认为我可以在用户创建时更新虚拟,但没有运气。从下面的邮政处理代码片段:
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'设置这个propery,那么在HTML表单中再创建一个输入域。 – hawk
我确实尝试过,没有运气。但是,我从集合中删除了所有文档,然后再次尝试,并且工作正常! TY – bobbyg603