我不确定问题是什么,因为我已经阅读了很多例子。
根据我在此StackOverFlow(Mongoose - Increment a value inside an array of objects)中建议的内容,我轻松更改了民意调查的格式,以适应建议的内容。
所以我能够创建一个文档格式:
let firebase = FIRDatabase.database().reference()
// Access The Posts child of the database
self.firebase.child("Posts").observeSingleEvent(of: .value, with: { (snapshot: FIRDataSnapshot) in
if let snapVal = snapshot.value {
// Iterate through posts..
// Note that if you want to iterate though a snapVal, the best way to to so would be through converting it to a Dictionary of [String: AnyObject]!
}
})
这是我到目前为止所拥有的:
民意调查模式
{
"_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)
在我的终端中,我看到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)
}
)
})
它收到了我正在查找的文档但它根本没有更新该值。
我是否正确设置了模型?或者Mongoose不支持模板字符串?
***更新 这是我如何创建文档的片段
console.log(document
答案 0 :(得分:1)
在互联网上进行一些研究之后,我找到了它无法正常工作的原因:您无法使用“动态”键初始化对象。
来源:Mongoose update on a string variable not working?
通过了解,这只是一个简单的解决方案来初始化文字对象:
let id = req.params.id;
let labelOption = req.query.labelOption;
let query = "labelOptions." + labelOption
let obj = {
[query] : 1
}
Poll.findByIdAndUpdate(
id,
{$inc: obj },
function(err, document){
console.log(err)
console.log(document)
}
)