json
(例如获取轮询数组的索引,然后推送到嵌套的输入数组)。我尝试创建一个新的输入并将其推送到输入数组。
以下代码非常适用于在给定用户上创建新投票:
const poll = user.polls.create({});
user.polls.push(poll);
user.save(function(err, data) {
//more stuff here
})
然而,当我在投票中尝试相同的方法时,我无法保存到DB。
const poll = user.polls.id(<some _id>);
const input = poll.create({}); // or user.polls.id(<some _id>).create({});
poll.inputs.push(input);
我反复尝试了几件事,但鉴于我目前的数据结构,似乎无法实现这一点。我已经阅读了一些关于SO以及其他在线来源的帖子,但大多数都给出了第一个嵌入子文档的示例,而不是子文档的子文档。如果您能提供任何帮助,我们将不胜感激。谢谢我正在考虑在这个项目中放弃猫鼬,只使用
mongodb
软件包可以更清晰地控制我的数据。
这是我当前的代码:
const InputSchema = new Schema({
[ALL SORTS OF VARIOUS DATA HERE]
});
const PollSchema = new Schema({
inputs: [InputSchema],
});
const UserSchema = new Schema({
polls: [PollSchema]
});
module.exports = mongoose.model('User', UserSchema);
来自控制器。js公司
const User = require('../models/User');
router.post('/polls/inputs/add/:creatorId', function(req, res) {
let title = req.body.option.title,
order = req.body.option.order,
voters= [];
User.findOne({ creatorId: req.params.creatorId })
.then(user => {
const input = {order, title, voters};
user.polls.id(req.body.pollId).inputs.push(input);
user.save(function(err, data) {
if (err) {
res.statusCode = 500;
return res.json({ title: 'Save Error', message: err });
}
console.log('Success!');
res.json({ input: input });
});
}).catch(err => {
res.statusCode = 500;
return res.json({ title: 'DB Error', message: err });
});;
});