【发布时间】:2015-09-05 12:56:56
【问题描述】:
我需要在 Mongo 中存储对问题的回答。我正在使用猫鼬。我的查询现在看起来像这样:
router.post('/answers', expressJwt({secret: config.secret}), function (req, res, next) {
var user = req.user
var question = req.body.question
var answer = req.body.answers
var id = question._id
db.User.update({email: user.email}, {$set: {answers[question._id]: answer}}, function (err, doc) {
if (err) {
console.error('problem updating answers object', err)
return res.json(err)
}
console.log(doc)
return res.json('successfully updated answers')
})
})
我收到一个错误“意外令牌 [”我如何向我的答案对象添加属性?
我必须调用数据库来获取答案对象,然后对其进行修改,然后将其更新回数据库。这是我使用的代码。注意:使用lea 和 exec 和 mongoose 来获取原始对象,否则你会遇到修改 mongoose 对象的问题。
router.post('/answers', expressJwt({secret: config.secret}), function (req, res, next) {
var user = req.user
var question = req.body.question
var answer = req.body.answers
var id = question._id
db.User.findOne({email: user.email}).lean().exec(function (err, user) {
user.answers[question._id] = answer
db.User.update({email: user.email}, {$set: {answers: user.answers}}, function (err, doc) {
if (err) {
console.error('problem updating answers object', err)
return res.json(err)
}
console.log(doc)
return res.json('successfully updated answers')
})
})
})
【问题讨论】:
-
console.dir(answers[question._id])输出什么? -
@mscdex 好吧,这取决于上下文,但在这种情况下什么都没有。我正在尝试向答案对象添加一个新属性,该属性是正在回答的问题的 id:答案数组。如果您从数据库中检索用户并访问此答案对象,则取决于他们是否回答了该特定问题。
-
刚刚查看了console.dir() 属性将是 id : answers, id : answers 所有问题。