除了在每个模型文件中包含 require('mongoose') 之外,还有更好的方法吗?

is there better ways other than including require('mongoose') in every models file?

我在主 app.js 文件中需要 mongoose 一次。我可以将它传递给用户吗?

var mongoose = require('mongoose');

不重新加载?在每个文件中。每次我需要相同的模块时,脚本不会做额外的工作吗?

var User = require('./models/user')

来自节点文档

模块在第一次加载后被缓存。这意味着(除其他事项外)每次调用 require('foo') 都会返回完全相同的对象,如果它解析为同一个文件的话。

多次调用 require('foo') 可能不会导致模块代码被多次执行。

看看Caching

仍然可以全局要求 mongoose 模块。而不是 var mongoose = require('mongoose'); 只需写 mongoose = require('mongoose');。然后你就可以从任何其他模块访问猫鼬了。

如果您使用的是coffeescript,那么您必须显式添加到全局对象。

在 utils 文件中,全局需要你需要的所有东西:

//utils.js

globals['mongoose] = require('mongoose');
globals['fs'] = require('fs-extra');

现在,在您的所有脚本中,您只需要需要 utils 文件。 :

require('./utils');

console.log('fs is ' + fs);
console.log('mongoose is ' + mongoose);

我在创建测试实用程序文件时经常使用它,但我没有必要在生产中使用它。