如果我使用module.exports = mongoose.model('People', PersonSchema, 'People');
而不是以下代码正常工作
People = require("../models/people");
People.find(function (err, docs) {});
但是exports = mongoose.model('People', PersonSchema, 'People');
在People.find()
TypeError: Object #<Object> has no method 'find'
处{{1}}
为什么?
答案 0 :(得分:1)
这是因为module.exports
的值是require()
在其他模块中返回的值。 exports
只是为方便起见而提供的module.exports
的参考副本。
当你只是修改(或“ augmenting ”)导出对象时,要么都会工作,因为它们都引用同一个对象。但是,一旦您打算替换该对象,您必须将替换设置为module.export
。
来自Modules(强调我的):
请注意
exports
是对module.exports
的引用,使其仅适用于 扩充 < / strong>即可。如果要导出单个项目(例如构造函数),则需要直接使用module.exports
。function MyConstructor (opts) { //... } // BROKEN: Does not modify exports exports = MyConstructor; // exports the constructor properly module.exports = MyConstructor;