Sails.js Sails v0.10.x不';在生产模式下,不尊重production.js中的连接配置

Sails.js Sails v0.10.x不';在生产模式下,不尊重production.js中的连接配置,sails.js,sails-mongo,Sails.js,Sails Mongo,在Sails v.0.10.x中为生产使用设置db连接的正确方法是什么?当我在生产模式(环境)下启动应用程序时,我希望Sails使用我在production.js中提到的连接,但事实并非如此。它似乎总是使用默认连接——“localDiskDb” 然而,当我在开发模式(环境)下启动sails时,它确实使用config/development.js中指定的连接,正如我所期望的那样 已更新 注意:我写production.js的位置时弄错了。它位于/config/env/production.js中,

在Sails v.0.10.x中为生产使用设置db连接的正确方法是什么?当我在生产模式(环境)下启动应用程序时,我希望Sails使用我在production.js中提到的连接,但事实并非如此。它似乎总是使用默认连接——“localDiskDb”

然而,当我在开发模式(环境)下启动sails时,它确实使用config/development.js中指定的连接,正如我所期望的那样

已更新

注意:我写production.js的位置时弄错了。它位于/config/env/production.js中,正如sgress454所说的那样。事实上,这个文件是由生成器创建的,放在正确的位置,我没有更改它

config/env/production.js如下所示:

// config/env/production.js

module.exports = {
    connection: 'mongo_production'
};
// config/models.js

module.exports.models = {
    // connection: 'localDiskDb'
};
// config/connections.js

module.exports.connections = {
    mongo_development: {
        adapter: 'sails-mongo',
        host: 'localhost',
        port: 27017,
        user: '',
        password: '',
        database: 'my_local_db'
    },

    mongo_production: {
        adapter: 'sails-mongo',
        url: 'mongodb://me:mypw@foobar.mongohq.com:10052/my_production_db'
    }
};
module.exports = {
    models: {
        connection: 'mongo_production'
    }
};
config/models.js如下所示:

// config/env/production.js

module.exports = {
    connection: 'mongo_production'
};
// config/models.js

module.exports.models = {
    // connection: 'localDiskDb'
};
// config/connections.js

module.exports.connections = {
    mongo_development: {
        adapter: 'sails-mongo',
        host: 'localhost',
        port: 27017,
        user: '',
        password: '',
        database: 'my_local_db'
    },

    mongo_production: {
        adapter: 'sails-mongo',
        url: 'mongodb://me:mypw@foobar.mongohq.com:10052/my_production_db'
    }
};
module.exports = {
    models: {
        connection: 'mongo_production'
    }
};
config/connections.js如下所示:

// config/env/production.js

module.exports = {
    connection: 'mongo_production'
};
// config/models.js

module.exports.models = {
    // connection: 'localDiskDb'
};
// config/connections.js

module.exports.connections = {
    mongo_development: {
        adapter: 'sails-mongo',
        host: 'localhost',
        port: 27017,
        user: '',
        password: '',
        database: 'my_local_db'
    },

    mongo_production: {
        adapter: 'sails-mongo',
        url: 'mongodb://me:mypw@foobar.mongohq.com:10052/my_production_db'
    }
};
module.exports = {
    models: {
        connection: 'mongo_production'
    }
};
这里有几个问题:

  • 每个环境的配置文件都需要放在config/env子目录中,否则它们将被视为与常规配置文件相同的文件(即,没有优先权)。如果有多个文件试图设置同一个密钥,则结果将不可预测
  • 您正试图通过设置
    connection
    config键来更改模型的默认连接;它需要是
    型号。连接
  • 将两者结合在一起,您需要一个如下所示的config/env/production.js文件:

    // config/env/production.js
    
    module.exports = {
        connection: 'mongo_production'
    };
    
    // config/models.js
    
    module.exports.models = {
        // connection: 'localDiskDb'
    };
    
    // config/connections.js
    
    module.exports.connections = {
        mongo_development: {
            adapter: 'sails-mongo',
            host: 'localhost',
            port: 27017,
            user: '',
            password: '',
            database: 'my_local_db'
        },
    
        mongo_production: {
            adapter: 'sails-mongo',
            url: 'mongodb://me:mypw@foobar.mongohq.com:10052/my_production_db'
        }
    };
    
    module.exports = {
        models: {
            connection: 'mongo_production'
        }
    };
    

    然后,在生产模式下提升时,默认情况下,模型将使用
    mongo_生产连接。

    在sails版本0.12中,config/env文件夹下将有两个env文件。 因此,我们可以在这两个文件中编写特定于模式的(生产/开发)配置。
    为了在特定模式下运行我们的sails应用程序,我们必须遵循以下步骤:

    步骤1) 在config/local.js文件中

    module.exports = {  
       // port: process.env.PORT || 1337,   // comment this line if you want to set the different ports for different modes
       environment: process.env.NODE_ENV || 'development'  
    };
    
    步骤2)在env/developement.js文件中
    编写特定于开发的配置

    module.exports = {
      port: 8080, // will change from default port 1337 to 8080
      models: {
          connection: 'developement_db',
          migrate: 'alter'
      }
    };
    
    module.exports = {
      port: 9090, // will change from default port 1337 to 9090
      models: {
          connection: 'production_db',
          migrate: 'safe'
      }
    };
    
    步骤3)在env/production.js文件中
    编写特定于生产的配置

    module.exports = {
      port: 8080, // will change from default port 1337 to 8080
      models: {
          connection: 'developement_db',
          migrate: 'alter'
      }
    };
    
    module.exports = {
      port: 9090, // will change from default port 1337 to 9090
      models: {
          connection: 'production_db',
          migrate: 'safe'
      }
    };
    
    步骤4)要在特定模式下运行sails应用程序

    • 以生产方式运行

      $NODE\u ENV=生产npm开始

      帆船将在9090港航行

    • 以开发模式运行

      $NODE\u ENV=developement npm start

      帆船将在8080港航行


    首先,感谢您如此快速地回答我的问题。接下来,我搞错了production.js的位置。它一直都在正确的地方,我更新了问题以反映这一点。最后,你的观点2是正确的!一旦我设置了
    models.connection
    键,一切正常。再次感谢。