【发布时间】:2016-12-10 19:00:44
【问题描述】:
我不确定问题出在哪里,因为我已经阅读了许多示例。
根据我在 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
}
这是我目前所拥有的:
投票模型
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)
使用 express 和 mongoose,这就是我所拥有的:
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 不支持模板字符串?
***更新 这是我如何创建文档的 sn-p
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!'})
});
【问题讨论】:
标签: node.js mongodb express mongoose