我正在探索编写与Sails.js
数据存储进行对话的mongodb
应用程序。我已经完成了所有工作,但是我希望能够添加某种类型的初始化过程,该过程在npm install
点运行,类似于rake admin:create
中的Rails
{1}}世界。
我猜这可以通过grunt
任务以某种方式完成,但我想,在我推出自己的解决方案之前,我会问其他Sails / MongoDB用户他们实际上是什么在现实世界中做,看看是否出现了一致或最佳实践的解决方案。
答案 0 :(得分:3)
Sails应用程序的数据库初始化通常在config/bootstrap.js
file中完成。一个简单的例子就是:
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被解除时,引导程序才会运行,并且服务器不会启动,直到执行回调为止。如果您将任何内容作为回调的第一个参数发送,则会将其视为错误(与大多数标准节点回调一样),这将停止提升服务器。
请注意,您无法使用Waterline创建实际数据库。 Grunt任务可能是一个很好的地方,但您必须考虑Grunt无法访问Sails配置,因此您必须对要使用的数据库名称进行硬编码,或者找到一些其他方法使其可配置。这可能会对不同的环境产生影响(即开发与生产)。在我们Balderdash的项目中,我们通常会在签出代码后将数据库创建作为开发人员的手动步骤,然后使用bootstrap.js
初始化数据。这允许开发人员使用config/local.js
维护自己的数据库设置。
尽管如此,我可以看到设置Grunt任务以创建生产的数据库的价值,以便更轻松地将Sails应用程序部署到最终目的地。
答案 1 :(得分:1)
我个人认为sails.js团队使用Grunt是一个明智的决定。 Grunt为您需要的任何自动化提供可靠而灵活的解决方案。
我在我的sails.js项目中使用grunt,包括....
你不会对使用Grunt感到失望,开始时很容易.... So get to it!