我正在使用 node.js 和 MongoDb 驱动程序Mongoose 3.6.1。这是我的架构定义:
模型/user.js
var mongoose = require('mongoose'),
Schema = mongoose.Schema;
var userSchema = new Schema({
...
});
module.exports = {
model : mongoose.model('User', userSchema)
};
userSchema.statics.doSomething = function () {
console.log("I'm doing something");
}
然后在一个单独的控制器中,我做
控制器/另一个.js
var User = require("../models/user").model;
function foo() {
User.doSomething();
}
我收到以下错误
[TypeError: Object function model(doc, fields, skipId) {
if (!(this instanceof model))
return new model(doc, fields, skipId);
Model.call(this, doc, fields, skipId);
} has no method 'doSomething']
但是,如果我转储User
对象,我可以在那里看到该方法,正如预期的那样。这是转储的相关部分,确认
...
schema:
{ statics:
{ doSomething: [Function] }
...
知道我做错了什么吗?