Mongoose TypeError:在实例化模式types的对象时,对象不是一个函数

我遇到的问题是mongoose不让我实例化一个模式types的对象,在一个“pre”方法中,一个不同的模式。

我有两个模式 – '用户'和'Tickit'。

user.js的

var mongoose = require('mongoose'); var bcrypt = require('bcrypt-nodejs'); var Schema = mongoose.Schema; var Tickit = require('../models/Tickit'); var userSchema = new Schema({ email : String, password : String, tickits : [Tickit.tickitSchema] }); userSchema.methods.generateHash = function(password) { return bcrypt.hashSync(password, bcrypt.genSaltSync(8), null); }; userSchema.methods.validPassword = function(password) { return bcrypt.compareSync(password, this.password); }; module.exports = mongoose.model('User', userSchema); 

和Tickit.js

 var mongoose = require('mongoose'); var User = require('../models/User'); var Schema = mongoose.Schema; var tickitSchema = new Schema({ title: String, description: String, author : { type: Schema.Types.ObjectId, ref: 'User' }, comments: [{body:"string", by: mongoose.Schema.Types.ObjectId}] }); tickitSchema.pre('save', function(next){ var user = new User(); user.tickits.push ({id:this._id}); user.save(function(err){ if(err) res.send(err) .populate('tickits') .exec(function(err, blah){ if(err) res.send(err); }) res.json(blah); }) next(); }) module.exports = mongoose.model('Tickit', tickitSchema); 

我在Tickit中使用pre方法时所做的是在每次创buildTickit时使用该Tickit的id填充用户架构中的“Tickits”数组。

然而,在我的应用程序,当我创build一个tickit,应用程序崩溃,我得到这个错误

 var user = new User(); ^ TypeError: object is not a function 

尝试在你的函数中定义用户:

 tickitSchema.pre('save', function(next){ var User = require('../models/User'); // Code });