【发布时间】:2017-07-10 01:40:46
【问题描述】:
我正在尝试向 mongodb 集合 arrayList (user.completed) 推送一个值,但即使我的代码看起来正确,它也没有得到更新。
当我进行 API 调用时,值正在被传递,但是“$push”并没有为已完成的数组添加值!!我在这里错过了什么?
当我尝试将值推送到字符串时,我得到了预期的猫鼬错误。但是当我尝试将值推送到未定义的键('abc')时,不会像 mongodb 文档建议的那样创建一个新数组!不知道这里发生了什么!
//MongoDB数据
{
"_id" : ObjectId("58aa2eb1de7b414237b93981"),
"email" : "test@gmail.com",
"firstName" : "test",
"completed" : [],
"playing" : [],
"__v" : 2
// 接口
import mongoose from 'mongoose'
import { Router } from 'express'
import User from './../model/user'
api.put('/completed/:id', (req, res) => {
User.update(
{ "_id": req.params.id },
{ "$push": {
"completed": req.body.completed
}}
)
.then(doc => res.send(doc), err => res.status(400).send(err))
})
// 请求
var request = require("request");
var options = {
method: 'PUT',
url: 'http://localhost:8008/v1/user/completed/58aa2eb1de7b414237b93981',
headers: {
'content-type': 'application/json' },
body: { completed: { game: 'A', player: 'B' } },
json: true
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
【问题讨论】:
-
能否将用户猫鼬模式添加到问题中?
-
你确定它现在有效吗? req.params.id 为字符串,需要查询ObjectId。
-
更新并回答了我自己的问题...谢谢大家调查
标签: node.js mongodb mongoose mongoose-schema