Подтвердить что ты не робот

Есть ли способ отключить ватерлинию и использовать другую ORM в sails.js?

Я хочу заменить ватерлинию мангустом в приложении

4b9b3361

Ответ 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!

Дополнительную информацию можно найти здесь:

Использование 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);
 });
});