有没有一种方法来禁用水线,并在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:
- https://github.com/balderdashy/sails-docs/issues/69
- https://github.com/balderdashy/sails/issues/1077
使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); }); });