私は多くの例を読んだので、何が問題なのか分かりません。
このStackOverFlow(Mongoose - Increment a value inside an array of objects)で私がここでアドバイスしたことから、推奨された内容に合わせて簡単に世論調査の形式を変更しました。
だから私は、ように、文書のフォーマットを作成することができました:
{
"_id": "584c4160b3b22e1bdad59bce",
"title": "Food",
"description": "test",
"labelOptions": {
"burger": 29,
"coffee": 44,
"pizza": 23
},
"date": "Dec 10, 2016",
"__v": 0
}
は、ここで私がこれまで持っているものです。
投票Expressとマングースを使用してモデル
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const pollData = new Schema({
title: String,
description: String,
labelOptions: {},
date: String
})
module.exports = mongoose.model('PollData', pollData)
、ここに私が持っているものがあります:
app.put('/polls/:id', function(req, res){
let id = req.params.id;
let labelOption = req.query.labelOption;
let query = `labelOptions.${labelOption}`
Poll.findByIdAndUpdate(
id,
{$inc: { query: 1 } },
function(err, document){
console.log(err)
console.log(document)
}
)
})
私の端末では、console.log(document
は私が探していたドキュメントを受け取っていますが、値はまったく更新されません。
を正しく設定していますか?または、Mongooseはテンプレート文字列をサポートしていませんか?
***更新 これは私がインターネット上でいくつかの研究を行った後、文書
let labelOptions = {}; <=== creating object literal to hold as placeholder
const title = req.body.title;
const description = req.body.description;
req.body.labelOptions.split(/,\s*/).map(prop =>{
labelOptions[prop] = 0 // set counter to default 0
})
const poll = new Poll({
title: title,
description: description,
labelOptions: labelOptions,
date: moment().format('MMM D, YYYY')
});
poll.save(function(err) {
if (err) { return next(err); }
res.json({ message : 'Poll added!'})
});