Есть ли способ отключить ватерлинию и использовать другую ORM в sails.js?
Ответ 1
Определение переопределений через .sailsrc
Вы можете сделать это с помощью переопределений конфигурации, которые будут определены через .sailsrc
в корне вашего проекта. В основном вам необходимо предотвратить всю инициализацию Waterline, в настоящее время помечен как orm
hook. В .sailsrc:
{
"hooks": {
"orm": false,
"pubsub": false
}
}
Вам также придется отключить хост pubsub
- это зависит от крюка orm
. Соответствующие строки в источнике: v0.10, v0.9.8.
Это приведет к отключению крюка orm
для следующих команд запуска:
- паруса лифт
- sails console
- node app.js(поскольку commit 862c053a66), см. "Использование app.js.sailsrc" для более старых версий
Что касается стабильности этого в будущих версиях Sails, вы должны знать о том, что в настоящее время система крючков помечена как неустойчивая, а отключение крючков - не рекомендуется:
// Allow disabling of hooks by setting them to "false"
// Mostly useful for testing, and may cause instability in production!
Дополнительную информацию можно найти здесь:
- https://github.com/balderdashy/sails-docs/issues/69
- https://github.com/balderdashy/sails/issues/1077
Использование app.js.sailsrc
Примечание. Это выпекается в Sails по умолчанию, так как обсуждаемый PR был скомпонован для вырезания краев git проверок.
Для Sails 0.10.x
Чтобы сделать .sailsrc применимым к app.js, вы можете заменить строку 37 в app.js следующим образом:
// app.js, following line 36
var fs = require('fs');
var sailsRc = __dirname + '/.sailsrc';
var config = {};
fs.exists(sailsRc, function(exists){
if (!exists) return sails.lift();
fs.readFile(sailsRc, 'utf8', function(err, data){
if (err) {
console.warn('Error while reading .sailsrc:' + err);
}
try {
config = JSON.parse(data);
} catch(e) {
console.warn('Error while parsing .sailsrc:' + err);
}
sails.lift(config);
});
});
Для Sails 0.9.x
Замените app.js следующим образом:
// Start sails and pass it command line arguments
var fs = require('fs'),
optimist = require('optimist'),
sails = require('sails');
var sailsRc = __dirname + '/.sailsrc';
var config = optimist.argv;
fs.exists(sailsRc, function(exists){
if (!exists) return sails.lift(config);
fs.readFile(sailsRc, 'utf8', function(err, data){
if (err) {
console.warn('Error while reading .sailsrc:' + err);
}
try {
config = sails.util.merge(config, JSON.parse(data));
} catch(e) {
console.warn('Error while parsing .sailsrc:' + err);
}
sails.lift(config);
});
});