我正在构建一个使用MongoDb作为数据库并使用MongoDb表示后端的反应应用程序。我的一个模型的属性日期类型为Date。
words
然后,在我的反应应用程序上,我有一个表单,我输入所有这些信息。但是,如果我按照01/11/2017这样的日期,保存的日期是2017年10月31日。我读过的是因为MongoDd以UTC格式存储日期。有没有办法改变这种行为?因为当我尝试按日期搜索时,这个问题也给我带来了问题。快速的方法是将日期存储为字符串,但我希望将它们保留为日期格式。希望有人可以帮忙! 非常感谢!
答案 0 :(得分:1)
您必须将日期转换为仅日期和时间值 - Date.toISOString()
猫鼬应该能够安全地解释它。但这将是时区独立的,在您的情况下可能会或可能不会。
答案 1 :(得分:0)
我试过你说的话!我使用预保存挂钩来转换日期。
InfoSchema.pre('save', function(next) {
const info = this;
console.log(info);
console.log(info.fecha.toISOString());
info.fecha = info.fecha.toISOString();
next();
});

这是控制台中显示的结果:
{ fecha: 2017-11-03T00:00:00.000Z,
caja: 100,
bancos: 100,
cheques: 100,
debito: { total: 100, vencido: 100, _id: 59fcb3a6a914f71f7c9de9f8 },
credito: { total: 100, vencido: 100, _id: 59fcb3a6a914f71f7c9de9f7 },
_id: 59fcb3a6a914f71f7c9de9f6 }
2017-11-03T00:00:00.000Z
但保存在数据库中的结果是2017-11-02 21:00:00.000,再次提前一天。我不明白的方式!