我有一个使用猫鼬的模块。我的主要项目也使用猫鼬。我发现我无法使用模块与项目架构的连接。参见示例:
var mod = require('module_with_mongoose_connection');
var mongoose = require('mongoose');
var SessionSchema = new mongoose.Schema({ // replacing this with `mod.mongoose.Schema` works
...
});
mod.mongooseConnection.model('session', SessionSchema);
以上示例抛出
throw new TypeError('Undefined type at `' + path +
^
TypeError: Undefined type at `paths.name`
Did you try nesting Schemas? You can only nest using refs or arrays.
at Function.Schema.interpretAsType (/Users/me/Work/me/nodejs/orm-model/node_modules/mongoose/lib/schema.js:397:11)
at Schema.path (/Users/me/Work/me/nodejs/orm-model/node_modules/mongoose/lib/schema.js:334:29)
at Schema.add (/Users/me/Work/me/nodejs/orm-model/node_modules/mongoose/lib/schema.js:245:12)
at Schema.add (/Users/me/Work/me/nodejs/orm-model/node_modules/mongoose/lib/schema.js:240:14)
at new Schema (/Users/me/Work/me/nodejs/orm-model/node_modules/mongoose/lib/schema.js:72:10)
Why is that? A bug?
这个问题的解决方案是什么?一个错误?
答案 0 :(得分:1)
我有同样的错误,我的问题是我的require语句中有拼写错误:
var mongoose = require('Mongoose'); // Don't do this
var mongoose = require('mongoose'); // Use a lowercase 'm'
答案 1 :(得分:0)
我找到了the solution
。事实证明,只有在使用本地模块(例如require('../module_with_mongoose_connection')
)时才会抛出错误。在npm
(node_modules
内)使用模块时,它可以正常工作。当mongoose连接为dynamically patched
时,也会引发错误(例如,您添加了mongooseConnection.myattr = 'something'
之类的属性。)
这真的很奇怪,但我希望这个答案可以帮助别人。
答案 2 :(得分:0)
所以我遇到了同样的问题,@ xpepermint给出的答案并没有解决我的问题,但确实让我走上了正轨。我有两个主文件夹,每个文件夹都有自己的node_modules(例如C:\ MyDocs \ MyProject \ Server \ node_modules和C:\ MyDocs \ MyProject \ Tests \ node_modules)。在我给出的示例中,“Tests”文件夹下的测试脚本需要“Server”文件夹中的文件。