1

如果我使用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'

为什么?

4

1 回答 1

1

这是因为 的值是其他模块module.exports中返回的值。只是为方便起见而提供的参考副本。require()exportsmodule.exports

当您只修改(或“扩充”)导出对象时,任何一个都可以工作,因为它们都引用同一个对象。但是,一旦您打算替换对象,您必须将替换设置为module.export

模块(强调我的):

请注意,这exportsmodule.exports使其仅适用于扩充的参考。如果您要导出单个项目,例如构造函数,您将希望module.exports直接使用。

function MyConstructor (opts) {
  //...
}

// BROKEN: Does not modify exports
exports = MyConstructor;

// exports the constructor properly
module.exports = MyConstructor;
于 2013-05-28T19:38:08.567 回答