我想提供当前代码,看看是否有一种快速的方法来重构它。我只是想将一个孩子保存到父文档中,然后返回填充的那个父文档。
我的问题是,除此以外,我无法使其工作,我希望可以进行一些清理,因为我的数据最终将嵌套几层。
我的模特:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const BattletagSchema = new Schema({
battletag: {
type: String,
required: true
},
});
const UserSchema = new Schema({
name: {
type: String,
required: true
},
email: {
type: String,
required: true
},
password: {
type: String,
required: true
},
date: {
type: Date,
default: Date.now
},
battletags: [{type: Schema.Types.ObjectId, ref: 'battletags'}]
});
const Battletag = mongoose.model('battletags', BattletagSchema);
const User = mongoose.model('users', UserSchema);
module.exports = {Battletag, User};
我的控制器:
const validateBattletagInput = require('../../validation/battletag');
const Battletag = require('../../models/Battletag');
const User = require('../../models/User');
const battletagController = {
addTag: (req, res) => {
const {
errors,
isValid
} = validateBattletagInput(req.body);
if (!isValid) {
return res.status(400).json(errors);
};
const newBattletag = new Battletag({
battletag: req.body.battletag
});
newBattletag.save();
User.findByIdAndUpdate(req.body.userId, {
$push: {
battletags: newBattletag._id
}
}, {
new: true
}).
populate('battletags').
then(response => {
res.json(response);
});
},
removeTag: (req, res) => {
}
}
module.exports = battletagController;
简而言之,这可行。但是,我想清理它,也许不必保存子文档,查询用户,然后推送新的子文档,返回新副本,然后填充。猫鼬中有没有更有效的方法?也许一口气就能做到?
我已经呆了一两天,所以真的很感谢任何帮助。