我正在寻找一种在sails js中种植我的开发数据库的最佳方法。
在rails中,我只使用seeds.rb文件,但即便没有,我也可以使用rake任务。
对于风帆,我不确定如何在手动操作风帆控制台之外做到这一点。
请注意,为配置/模型添加逻辑的解决方案以及用于生产种子的模型本身并不是我想要的。我不希望这些记录存在于制作中。
答案 0 :(得分:4)
您可以使用测试框架,如Mocha。在开发模式下,将表名切换为development
表。这是一步一步:
mocha
npm install mocha --save-dev
创建test/boostrap.test.js
并填写(根据您的需要进行配置),查看我已配置的connections
,它会覆盖connections
处的默认config
var Sails = require('sails'),
sails;
before(function (done) {
Sails.lift({
log : {
level: 'error'
},
connections: {
mongodbServer: {
database: 'table_test'
}
},
models : {
migrate: 'drop'
}
}, function (err, server) {
sails = server;
done(err, sails);
});
});
after(function (done) {
// here you can clear fixtures, etc.
sails.lower(done);
});
创建另一个用于播种数据的文件,例如创建test/inject/seed.js
并填写类似的内容。
describe('data seeding', function(){
it('should seed data', function(done){
sails.models.someModel
.create({
name: 'Some Name'
})
.then(function(result){
done();
})
.catch(done);
});
});
在package.json
下"scripts"
键下添加此内容。
"test": "_mocha test/bootstrap.test.js test/inject/**/*.inject.js --no-timeouts"
使用npm test
运行它以播种数据。
如果您需要在开发模式下使用它,当您运行sails lift
时,请修改config/env/development.js
并添加类似内容。
module.exports = {
connections: {
mongodbServer: {
database: 'table_test'
}
}
};
现在您的sails lift
将使用table_test
代替生产表,因此您的生产表将会干净。
答案 1 :(得分:4)
您可以在config/bootstrap.js
文件中播种数据库。
为特定环境播种,我通常做的是:
// config/bootstrap.js
module.exports.bootstrap = function (cb) {
if(process.env.NODE_ENV !== 'development')
return cb();
// Do whatever you want
// And don't forget to...
return cb();
};
每次在Sails提升期间删除数据库:
// config/env/development.js
module.exports = {
models: {
migrate: 'drop'
}
};