有没有一种方法来禁用水线,并在sails.js中使用不同的ORM?

我想在我的sails.js应用程序中用mongoosereplace水线。 我正在寻找正确的方法来做到这一点,但我不知道如何在文档中。 任何人都可以解释如何做到这一点?

通过.sailsrc定义覆盖

你可以通过configuration覆盖来实现,通过项目根目录下的.sailsrc来定义。 基本上你必须防止整个水线初始化,目前标记为orm钩子。 在.sailsrc中:

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

你必须禁用pubsub钩子 – 它依赖于orm钩子。 源代码中的相关行: v0.10 , v0.9.8 。

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

  • 帆升降机
  • 风帆控制台
  • 节点app.js(自承诺862c053a66 ),请参阅“使app.js使用.sailsrc”旧版本

关于Sails未来版本中的稳定性,您应该知道钩子系统当前被标记为不稳定,并禁止禁用钩子:

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

更多信息可以在这里find:

使app.js使用.sailsrc

注意 :由于讨论的PR合并了git checkout,所以默认情况下这会被打散到Sails中。

对于帆0.10.x

为了使.sailsrc适用于app.js,你可以用下面的代码replaceapp.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

用这个replaceapp.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); }); });