在没有 sailsjs 的情况下全局设置水线模型连接
Set waterline model connection globally without sailsjs
我在我的项目中设置了水线,这不是风帆项目。我使用的是版本 0.11.x。如果我在每个模型中设置连接,它就可以完美运行。 (第一个代码块中注释掉的行)
当我按照文档在每个模型中设置连接时,我的模型工作正常:
Waterline = require('waterline');
module.exports = Waterline.Collection.extend({
tableName: 'external_resource',
meta: {
schemaName: 'intellinotedb'
},
// connection: 'myLocalPostgres',
attributes: {
id: {
type: 'integer',
required: true
},
但是,我想根据我设置的 NODE_ENV var 将数据库从测试更改为本地,再更改为生产。是否有地方可以在全球范围内为所有模型执行此操作?我像这样加载所有模型:
models = []
fs.readdirSync(HOMEDIR + '/lib/models/waterline').forEach (file) =>
models.push(require(HOMEDIR + '/lib/models/waterline/' + file))
class WaterlineORM
init:(next)=>
models.forEach (model) ->
orm.loadCollection(model)
orm.initialize config, (err, models) =>
throw err if(err)
global.models = models.collections
global.connections = models.connections
next()
我的连接是这样的:
const diskAdapter = require('sails-disk');
const postgresAdapter = require('sails-postgresql');
module.exports = {
adapters: {
'default': diskAdapter,
disk: diskAdapter,
postgres: postgresAdapter
},
connections: {
myLocalDisk: {
adapter: 'disk',
migrate: 'alter'
},
localhost: {
migrate: 'safe',
adapter: 'postgres',
database: 'intellinote',
host: 'localhost',
user: 'postgres',
password: '',
port: 5432
}
},
defaults: {
}
};
使用变量。
例如环境变量
connection: process.env.CONNECTION_NAME,
例如配置变量
var config = require('../config');
...
connection: config.connectionName,
我在我的项目中设置了水线,这不是风帆项目。我使用的是版本 0.11.x。如果我在每个模型中设置连接,它就可以完美运行。 (第一个代码块中注释掉的行)
当我按照文档在每个模型中设置连接时,我的模型工作正常:
Waterline = require('waterline');
module.exports = Waterline.Collection.extend({
tableName: 'external_resource',
meta: {
schemaName: 'intellinotedb'
},
// connection: 'myLocalPostgres',
attributes: {
id: {
type: 'integer',
required: true
},
但是,我想根据我设置的 NODE_ENV var 将数据库从测试更改为本地,再更改为生产。是否有地方可以在全球范围内为所有模型执行此操作?我像这样加载所有模型:
models = []
fs.readdirSync(HOMEDIR + '/lib/models/waterline').forEach (file) =>
models.push(require(HOMEDIR + '/lib/models/waterline/' + file))
class WaterlineORM
init:(next)=>
models.forEach (model) ->
orm.loadCollection(model)
orm.initialize config, (err, models) =>
throw err if(err)
global.models = models.collections
global.connections = models.connections
next()
我的连接是这样的:
const diskAdapter = require('sails-disk');
const postgresAdapter = require('sails-postgresql');
module.exports = {
adapters: {
'default': diskAdapter,
disk: diskAdapter,
postgres: postgresAdapter
},
connections: {
myLocalDisk: {
adapter: 'disk',
migrate: 'alter'
},
localhost: {
migrate: 'safe',
adapter: 'postgres',
database: 'intellinote',
host: 'localhost',
user: 'postgres',
password: '',
port: 5432
}
},
defaults: {
}
};
使用变量。
例如环境变量
connection: process.env.CONNECTION_NAME,
例如配置变量
var config = require('../config');
...
connection: config.connectionName,