LoopbackJS是否在新模型创建时自动创建createdAt和已修改字段?如何启用?

时间:2015-11-11 07:03:29

标签: loopbackjs strongloop

我很好奇,LB 会自动在新模型创建上创建createdAtmodified字段,就像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();
    });
});

这是创建的文档。没有createdAtmodified字段:

 [ { 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() <--
}]

1 个答案:

答案 0 :(得分:7)

在模型定义文件中,您可以像这样添加createdAt属性

false

这将在每个文档创建时添加时间戳。对于修改后的属性,没有我所知道的开箱即用的解决方案。一种方法是使用operation hook 'before save'在修改后的文档上设置时间戳。