Node.js 为Sails.js应用程序初始化MongoDB数据库和用户的推荐方法是什么?

Node.js 为Sails.js应用程序初始化MongoDB数据库和用户的推荐方法是什么?,node.js,mongodb,sails.js,Node.js,Mongodb,Sails.js,我正在探索编写一个与mongodb数据存储对话的Sails.js应用程序。我已经让它工作得很好,但我希望能够添加一些在npm安装点运行的初始化过程,类似于rake admin:create在Rails世界中运行 我猜这可以通过grunt任务来实现,但我想,在推出我自己的解决方案之前,我会询问其他Sails/MongoDB用户他们在现实世界中实际做了什么,看看是否出现了一致的或最佳实践的解决方案。我个人认为Sails.js团队使用grunt是明智的决定。Grunt为您需要的任何自动化提供了可靠而灵

我正在探索编写一个与mongodb数据存储对话的Sails.js应用程序。我已经让它工作得很好,但我希望能够添加一些在npm安装点运行的初始化过程,类似于rake admin:create在Rails世界中运行


我猜这可以通过grunt任务来实现,但我想,在推出我自己的解决方案之前,我会询问其他Sails/MongoDB用户他们在现实世界中实际做了什么,看看是否出现了一致的或最佳实践的解决方案。

我个人认为Sails.js团队使用grunt是明智的决定。Grunt为您需要的任何自动化提供了可靠而灵活的解决方案

我在sails.js项目中使用grunt,包括

从旧数据库导入数据 编译sass,即使默认情况下SAIL使用较少 编写咖啡脚本 组装敲除模板 将索引加载到elasticsearch中
使用Grunt不会让你失望,开始使用Grunt很容易……

我个人认为sails.js团队使用Grunt是一个明智的决定。Grunt为您需要的任何自动化提供了可靠而灵活的解决方案

我在sails.js项目中使用grunt,包括

从旧数据库导入数据 编译sass,即使默认情况下SAIL使用较少 编写咖啡脚本 组装敲除模板 将索引加载到elasticsearch中
使用Grunt不会让您失望,它非常容易入门。…

Sails应用程序的数据库初始化通常在中完成。一个简单的例子是:

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);

}
引导程序将仅在帆升起时运行,并且在执行回调之前服务器不会启动。如果您将任何内容作为第一个参数发送到回调,它将被视为一个错误,就像大多数标准节点回调一样,将停止提升服务器

请注意,不能使用Waterline创建实际的数据库。一个咕咕的任务将是一个很好的地方,但你必须考虑Grand没有访问帆配置,所以你必须硬编码数据库的名称使用,或找到其他方式使其可配置。这可能会对不同的环境产生影响,即开发与生产。在Balderdash的项目中,我们通常在开发人员签出代码后将数据库创建作为一个手动步骤留给开发人员,然后使用bootstrap.js初始化数据。这允许开发人员使用config/local.js维护自己的数据库设置


综上所述,我可以看到设置Grunt任务以创建用于生产的db的价值,从而更容易将您的Sails应用程序部署到其最终目的地。

Sails应用程序的数据库初始化通常在中完成。一个简单的例子是:

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);

}
引导程序将仅在帆升起时运行,并且在执行回调之前服务器不会启动。如果您将任何内容作为第一个参数发送到回调,它将被视为一个错误,就像大多数标准节点回调一样,将停止提升服务器

请注意,不能使用Waterline创建实际的数据库。一个咕咕的任务将是一个很好的地方,但你必须考虑Grand没有访问帆配置,所以你必须硬编码数据库的名称使用,或找到其他方式使其可配置。这可能会对不同的环境产生影响,即开发与生产。在Balderdash的项目中,我们通常在开发人员签出代码后将数据库创建作为一个手动步骤留给开发人员,然后使用bootstrap.js初始化数据。这允许开发人员使用config/local.js维护自己的数据库设置


综上所述,我可以看到设置Grunt任务以创建用于生产的db的价值,从而更容易地将您的Sails应用部署到其最终目的地。

因此,我将向Grunt添加一个任务,例如“db.create”,该任务连接到mongo并创建mongo数据库(如果尚未创建),并设置管理员用户等?当然!您甚至可以将这些任务作为单独的任务编写,然后让另一个任务同时运行。因此,我将向Grunt添加一个任务,例如“db.create”,它连接到mongo并创建mongo数据库(如果尚未创建),并设置管理员用户等?当然!您甚至可以将它们作为单独的任务编写,然后让另一个任务同时运行。