Javascript Mongoose TypeError:实例化架构类型的对象时,对象不是函数
我遇到的问题是mongoose不允许我在不同模式的“pre”方法中实例化模式类型的对象 我有两个模式-‘User’和‘Tickit’ User.jsJavascript Mongoose TypeError:实例化架构类型的对象时,对象不是函数,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我遇到的问题是mongoose不允许我在不同模式的“pre”方法中实例化模式类型的对象 我有两个模式-‘User’和‘Tickit’ User.js var mongoose = require('mongoose'); var bcrypt = require('bcrypt-nodejs'); var Schema = mongoose.Schema; var Tickit = require('../models/Tickit'); var userSchema = new
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方法在每次创建Tickit时用Tickit的id填充用户模式中的“Tickits”数组
然而,在我的应用程序中,当我创建一个tickit时,应用程序崩溃,我得到这个错误
var user = new User();
^
TypeError: object is not a function
尝试在函数中定义用户:
tickitSchema.pre('save', function(next){
var User = require('../models/User');
// Code
});
这成功了!非常感谢。在我发布问题后不久,我意识到创建一个新用户并不是我需要做的事情。相反,我应该用刚刚创建的tickit的id填充现有(当前登录)用户的tickit数组。找到答案了吗?