第一次解除Sails.js应用程序时加载数据(夹具)

new*_*000 5 node.js express sails.js

我正在使用Sails.js 0.10 RC7.当开发人员签出项目并运行它时,我想将一些数据预填充到数据库中.这应该仅在应用程序第一次运行时完成(或者我们应该在将新数据添加到夹具时发生这种情况).

我可以把数据放入,config/bootstrap.js但据我所知,每次运行都会sails lift运行.我很乐意这样写并写一些逻辑,但是如果已经有了一个处理这个问题的惯例,那么使用它会很棒.

为了清楚起见,我并没有特别提到测试装置,而是假设某些数据在任何运行环境中都可用.

有人已经解决了这个问题?

sgr*_*454 7

几乎我们在Balderdash所做的每一个Sails项目都面临着这个问题.我们几乎总是通过在引导程序中构建数据并将其包装在逻辑中来检测数据是否已经存在,就像您所描述的那样.就像是:

User.find({admin: true}).exec(function(err, adminUser) {
    // If an admin user exists, skip the bootstrap data
    if (adminUser) { return cb(); }
    // Otherwise, create data below...
});
Run Code Online (Sandbox Code Playgroud)

它不像真正的"上/下"数据库迁移那样强大,但由于我们使用非常方便(且无模式)的磁盘适配器进行开发,只需擦除数据文件即可擦除数据库,并再次解除Sails以获得新鲜的自制副本.我们很少会错过db迁移带来的复杂情况,但我们确实意识到有些情况需要它们.Sails社区已经提出了一些解决方案(这是一个例子),这是我们希望看到的!