我想在我的 Sails.js 应用程序中将 Waterline 替换为 Mongoose。我正在寻找正确的方法,但在文档中没有找到如何做到这一点。有人能解释一下如何做吗?
您可以通过在项目根目录下定义 .sailsrc
的配置覆盖来实现此操作。基本上,您需要防止整个 Waterline 初始化,目前标记为orm
钩子。在 .sailsrc 中:
{
"hooks": {
"orm": false,
"pubsub": false
}
}
您还需要禁用pubsub
钩子 - 这取决于orm
钩子。 相关源代码行:v0.10,v0.9.8。
这将关闭以下启动命令的orm
钩子:
关于未来版本中Sails的稳定性,您应该知道目前钩子系统被标记为不稳定,禁用钩子是不建议的:
// Allow disabling of hooks by setting them to "false"
// Mostly useful for testing, and may cause instability in production!
更多信息可以在此找到:
注意:自从讨论中的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);
});
});
.sailsrc
文件中添加任何注释。 - Vadorequest