在sails.js中有没有禁用waterline并使用不同的ORM的方法?

19

我想在我的 Sails.js 应用程序中将 Waterline 替换为 Mongoose。我正在寻找正确的方法,但在文档中没有找到如何做到这一点。有人能解释一下如何做吗?

1个回答

27

通过 .sailsrc 定义覆盖

您可以通过在项目根目录下定义 .sailsrc 的配置覆盖来实现此操作。基本上,您需要防止整个 Waterline 初始化,目前标记为orm钩子。在 .sailsrc 中:

{
  "hooks": {
    "orm": false,
    "pubsub": false
  }
}

您还需要禁用pubsub钩子 - 这取决于orm钩子。 相关源代码行:v0.10v0.9.8

这将关闭以下启动命令的orm钩子:

  • sails lift
  • sails console
  • node app.js (自提交 862c053a66以来),旧版本请参见“使用.sailsrc使app.js”

关于未来版本中Sails的稳定性,您应该知道目前钩子系统被标记为不稳定,禁用钩子是不建议的

// Allow disabling of hooks by setting them to "false"
// Mostly useful for testing, and may cause instability in production!

更多信息可以在此找到:

让app.js使用.sailsrc

注意:自从讨论中的PR被合并到最新的git检出版本后,默认情况下,这已经内置在Sails中。

对于Sails 0.10.x

要使.sailsrc应用于app.js,您可以将app.js中的第37行替换为以下内容:

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

1
啊,我应该提到这适用于v0.10和当前的主分支。我已经相应地更新了我的答案,并正在研究0.9.x上的选项。 - marionebl
顺便说一下,我无法使用nodemon使其工作(无法从nodemon运行sails lift,引用问题)。并且不应该在.sailsrc文件中添加任何注释。 - Vadorequest
2
添加了与 Sails 源代码相关行的链接。 - marionebl
2
精彩的概述-有关禁用钩子的更多信息在此处https://github.com/balderdashy/sails/issues/1077#issuecomment-28074836 - mikermcneil
1
感谢@mikermcneil。我已更新答案以反映着陆的PR并添加了Sails问题1077的链接。 - marionebl
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接