为Sails.js应用程序初始化MongoDB数据库和用户的build议方法是什么?
我正在探索编写一个与mongodb
数据存储对话的Sails.js
应用程序。 我已经得到了所有的工作,但我希望能够添加一些类似于rake admin:create
在Rails
世界中运行的npm install
点的初始化过程。
我猜测这可以通过一个grunt
任务来完成,但是我想,在我推出自己的解决scheme之前,我会问其他的Sails / MongoDB用户他们在现实世界中究竟做了什么,看看是否一致或最佳实践解决scheme已经出现。
Sails应用程序的数据库初始化通常在config/bootstrap.js
文件中完成 。 一个简单的会是这样的:
module.exports = function(cb) { User.findOrCreate( // Search for user with "admin" flag {admin: true}, // Create one if no such user is found {admin: true, name: 'Admin User', ...} ).exec(cb); }
只有当Sails被解除时,引导程序才会运行,服务器在执行callback之前不会启动。 如果你发送任何东西作为callback的第一个参数,它将被认为是一个错误(像大多数标准的节点callback),将停止解除服务器。
请注意,您无法使用Waterline创build实际的数据库。 一个Grunt任务将是一个很好的地方,但你必须考虑到Grunt不能访问Sailsconfiguration,所以你必须硬编码数据库的名称使用,或find其他方式使其可configuration。 这可能会影响不同的环境(即发展与生产)。 在Balderdash的项目中,我们通常在开发完代码之后将数据库创build作为开发人员的手动步骤,然后使用bootstrap.js
初始化数据。 这允许开发人员使用config/local.js
来维护自己的数据库设置。
所有这一切,我可以看到在创build一个生产数据库的Grunt任务的价值,使其更容易部署您的Sails应用程序的最终目的地。
我个人认为sails.js团队使用Grunt是一个明智的决定。 Grunt为您所需的任何自动化提供了可靠和灵活的解决scheme。
我在我的sails.js项目中使用了一切,包括…
- 从旧数据库导入数据
- 编译sass(尽pipesails默认使用较less)
- 编译coffeescript
- assembly淘汰赛模板
- 将索引加载到elasticsearch中
你不会失望,使用Grunt,这是很容易开始…. 所以去吧!