我使用的是 Sails.js 0.10 RC7。当开发人员 checkout 项目并运行它时,我想将一些数据预填充到数据库中。这应该只在应用程序第一次运行时完成(或者我们应该在新数据添加到固定装置时发生这种情况)。
我可以将数据放在 config/bootstrap.js
中,但据我所知,每次运行 sails lift
时都会运行。我可以这样做并编写一些逻辑,但如果已经有处理此事的约定,那么使用它会很棒。
需要明确的是,我并不是专门指测试装置,而是假定在任何运行环境中都可用的一些数据。
有人已经解决了这个问题吗?
最佳答案
我们在 Balderdash 进行的几乎每个 Sails 项目都面临这个问题.我们几乎总是通过在 bootstrap 中建立数据来解决它并将其包装在逻辑中以检测数据是否已经存在,就像您描述的那样。像这样的东西:
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...
});
它不像真正的“上/下”数据库迁移那样健壮,但由于我们使用非常方便(且无模式)的 disk adapter对于开发,只需通过删除数据文件来删除数据库,然后再次启动 Sails 以获得新的引导副本,这很简单。我们很少会错过数据库迁移带来的复杂性,但我们确实意识到在某些情况下它们变得必要。 Sails 社区已经提出了一些解决方案(这里是 one example )作为回应,这是我们希望看到的!
关于node.js - 第一次加载 Sails.js 应用程序时加载数据(固定装置),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24090135/