node.js - 如何使用 mongoose 在 mongoDB 中手动设置 createdAt 时间戳?
问题描述
我正在尝试通过将时间戳添加到之前缺少时间戳的所有行来迁移我的数据库。我已经使用 _id 计算了 createdAt 时间戳,但我无法设置时间戳。我在这里做错了什么?有人可以帮忙吗?
let Question = db.model('Question');
let items = await Question.findWithDeleted();
let processedIds = items.map((q) => q._id);
processedIds.forEach(function (id) {
const timestamp = id.getTimestamp();
// const date = new Date(parseInt(timestamp, 16) * 1000);
// echo(timestamp)
Question.update({ "_id": id }, { "$set": { createdAt: timestamp } }, (h) => {
console.log(h);
});
});
这是模型:
const Question = new Schema({ “类型”: { 类型:字符串, 修剪:真的, 枚举:Object.values(问题类型), required: '问题类型是必需的' }, “文本”: { 类型:字符串, 要求:真 }, "desc": NotRequiredStringSchema, “选项”: [{ “id”:对象 ID, “名称”:NotRequiredStringSchema, “helperText”:NotRequiredStringSchema, “icon_key”:NotRequiredStringSchema, “icon_url”:NotRequiredStringSchema, “icon_svg”:NotRequiredStringSchema }], “placeHolder”:NotRequiredStringSchema, “buttonPosition”:NotRequiredStringSchema, “buttonText”:NotRequiredStringSchema, "buttonHoverText": NotRequiredStringSchema, “helperText”:NotRequiredStringSchema, “最大”:数字, “分钟”:数字, “默认”:混合, “icon_key”:NotRequiredStringSchema, “icon_url”:NotRequiredStringSchema, “icon_svg”:NotRequiredStringSchema, "showTick": { type: Boolean, required: false, default: false }, “朗”:{ 要求:真, 类型:地图, 的: { 类型:地图, 的:字符串 } } }, { 时间戳:真 });
解决方案
如果你让你的架构像这样
const SchemaName = new Schema({
.......
}, {
timestamps: true
})
它将自动创建 createdAt 和 updatedAt 字段,并在每次执行创建和更新操作时更新它们的值。
现在其他情况,如果您手动创建 createdAt 和 updatedAt 字段,例如此架构
const SchemaName = new Schema({
.......
createdAt: { type: Date, default: Date.now },
updatedAt: { type: Date, default: Date.now }
})
然后,您可以在创建和更新记录时使用中间件更新 createdAt 和 updatedAt 值。
SchemaName.post('save', (doc) => {
console.log('%s has been saved', doc._id);
});
SchemaName.pre('update', () => {
this.update({},{ $set: { updatedAt: new Date() } });
});
推荐阅读
- android - 显示特定活动而不显示应用程序的主要活动
- flutter - 由于底部导航栏,颤动底部工作表不可见
- python - Python 3.7 挂起获取约会项目的 Outlook 日历开始或结束属性
- python - Python 模块“请求”和“消息框架”
- javascript - 用 selenium 阅读 ajax.Responder
- android - 无法为intent android打开pdf文件
- javascript - Restart transition effect using js or jquery
- javascript - 语法错误:预期的表达式,得到 '&'
- javascript - 图片上的粘性导航JS不起作用
- java - Netbeans将root设置为作者