我在前端有一个带有后端节点的Angular,在那里我显示用户可以删除和编辑的用户消息。 当我删除一条消息时,我还删除了用户数组中的所有记录,并且在前端工作正常,没有删除的消息显示,但是当我签入数据库时,对于用户记录,仍然有一个在用户的messages数组中记录。
所以,当我做db.users.find()
我找到删除了所有邮件的用户:
"messages" : [ ObjectId("58d921cacca7c04abd100344") ], "__v" : 9
这是messages model
我从数据库中删除消息记录。
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var User = require('./user');
var schema = new Schema({
content: {type: String, required: true},
user: {type: Schema.Types.ObjectId, ref: 'User'}
});
schema.post('remove', function (message) {
User.findById(message.user, function (err, user) {
user.messages.pull(message);
user.save();
});
});
module.exports = mongoose.model('Message', schema);
这是user model
:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var mongooseUniqueValidator = require('mongoose-unique-validator');
var schema = new Schema({
firstName: {type: String, required: true},
lastName: {type: String, required: true},
password: {type: String, required: true},
email: {type: String, required: true, unique: true},
messages: [{type: Schema.Types.ObjectId, ref: 'Message'}]
});
schema.plugin(mongooseUniqueValidator);
module.exports = mongoose.model('User', schema);
当我检查邮件集合时,根本没有邮件。 虽然它在前端工作正常,但我想知道为什么在为用户删除了所有消息后,它仍然在数据库中显示该记录?