用户拥有一组团队。删除A Team后,我希望从用户的Team数组中删除RefID
TeamSchema.pre('remove', function(next) {
const team = this;
User.update( { teams: { $in: [team._id] } }, { $pull: { teams: team._id } }, next);
});
收到此错误:
(node:7484)UnhandledPromiseRejectionWarning:未处理的promise promise(拒绝ID:1):TypeError:User.update不是函数
此外,其他方法都不起作用(Model.findById, Model.find
等...),尽管我的模型和mongoose都是在文件顶部导入的。
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const User = require('./user');
我的mongoose
操作中没有一个在Model.pre()
函数内工作。
我有另一个pre
方法的文件,其中Model.find
函数有效:
UserSchema.pre('remove', function(next) {
const user = this;
Team.find({ admin: { $in: [user._id] } }, function(err, teams) {
if (err) {
return next(err);
}
teams.forEach(function(t) { t.remove(); });
next
});
});
是否有人熟悉此问题?
答案 0 :(得分:0)
您可以尝试使用mongoose.models[modelName]
代替直接型号名称。像贝娄一样
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
var UserSchema = new Schema({
// .....
})
UserSchema.pre('remove', function(next) {
const user = this;
mongoose.models['Team'].find({ admin: { $in: [user._id] } }, function(err, teams) {
if (err) {
return next(err);
}
teams.forEach(function(t) { t.remove(); });
next();
});
});
应使用名称Team
导出和团队模型。像:
module.exports = mongoose.model('Team', TeamSchema);