我很好奇,LB 会自动在新模型创建上创建createdAt
和modified
字段,就像RoR一样吗? LB文档说它应该,但是当我尝试创建一个新模型时,LB不会创建这些字段。这是我在MongoDB集合中创建新模型和新文档的脚本:
'use strict';
var server = require('./server');
var ds = server.dataSources.mongodb;
var collections = ['user'];
ds.automigrate(collections, function(er) {
if (er) throw er;
console.log('== Looback tables [' + collections + '] created in ', ds.adapter
.name);
server.models.user.create([{
username: 'admin',
password: "admin",
email: 'admin@gmail.com',
}], function(err, newUser) {
if(err) {
console.error("== Create ERROR ==:\n\r", err);
ds.disconnect();
process.exit(1);
}
console.log('== newUser ==:\n\r', newUser);
ds.disconnect();
process.exit();
});
});
这是创建的文档。没有createdAt
和modified
字段:
[ { username: 'admin',
password: '$2a$10$.IqOjq1EEU1s1zEeb7IO7.tLAa0HljgS2frAR77AsoB8jgfZjWfi6',
email: 'admin@gmail.com',
id: 5642e5ecbf5d88742390971f } ]
如何启用该功能?或者我应该在每次创建新模型或修改现有模型时显式传递这些值?像这样:
server.models.user.create([{
username: 'admin',
password: "admin",
email: 'admin@gmail.com',
createdAt: new Date(), <--
modified: new Date() <--
}]
答案 0 :(得分:7)
在模型定义文件中,您可以像这样添加createdAt属性
false
这将在每个文档创建时添加时间戳。对于修改后的属性,没有我所知道的开箱即用的解决方案。一种方法是使用operation hook 'before save'在修改后的文档上设置时间戳。