Pak*_*Chu 2 mongoose mongodb momentjs mongoose-schema
所以我在 momentjs 上遇到了麻烦。当我拨打电话后,时间戳没有更新。我等了 30 秒才再次拨打电话,但仍然得到相同的时间。我怎样才能解决这个问题?下面是我的代码,所以让我知道我做错了什么。
var mongoose = require('mongoose');
var moment = require('moment');
var now = moment();
var UserSchema = new mongoose.Schema({
email: { type: String, default: ''},
name: { type: String, default: ''},
password: { type: String, default: ''},
timestamp: {type: String, default: now.format("dddd, MMMM Do YYYY, h:mm:ss a")}
});
module.exports = mongoose.model('UserSchema', UserSchema);
module.exports = {
find: function(params, callback) {
User.find(params, function(err, result) {
if (err) {
callback(err, null);
return;
}
callback(null, result);
return;
});
},
create: function(params, callback) {
User.create(params, function(err, result) {
if (err) {
callback(err, null);
return;
}
callback(null, result);
return;
});
}
}
router.post('/', function(req, res, next) {
UserController.create(req.body, function(err, result) {
if (err) {
res.json({
confirmation: 'fail',
message: err
});
return;
}
res.json({
confirmation: 'success',
result: result
});
return;
});
return;
});
Run Code Online (Sandbox Code Playgroud)
这行代码只会在模块加载时执行一次:
var now = moment();
Run Code Online (Sandbox Code Playgroud)
因此所有now文档都将使用相同的值。
相反,您的模式定义应该使用一个函数,每次创建新文档时都会调用该函数:
var UserSchema = new mongoose.Schema({
email: { type: String, default: ''},
name: { type: String, default: ''},
password: { type: String, default: ''},
timestamp: {
type: String,
default: () => moment().format("dddd, MMMM Do YYYY, h:mm:ss a")
}
});
Run Code Online (Sandbox Code Playgroud)
作为旁注,请考虑使用Date数据类型而不是string时间戳,因为它更加灵活和高效。
| 归档时间: |
|
| 查看次数: |
4168 次 |
| 最近记录: |