所以我遇到了关于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;
});
答案 0 :(得分:1)
这行代码只会在加载模块时执行一次:
var now = moment();
因此,所有文档将使用相同的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")
}
});
作为旁注,请考虑使用Date
数据类型而不是string
作为时间戳,因为它更灵活,更高效。