我想推送一個值到MongoDB集合arrayList(user.completed),但它並沒有得到更新,即使我的代碼似乎是正確的。推送項目到Mongodb集合數組
當我進行API調用時,值正在傳遞,但是「$ push」沒有爲完成的數組添加值!我在這裏錯過了什麼?
當我嘗試推動值到一個字符串,我得到預期的貓鼬錯誤。但是,當我嘗試將值推送到未定義的鍵('abc')時,不會像mongodb文檔建議的那樣創建新數組!不知道這裏發生了什麼!
// MongoDB的數據
{
"_id" : ObjectId("58aa2eb1de7b414237b93981"),
"email" : "[email protected]",
"firstName" : "test",
"completed" : [],
"playing" : [],
"__v" : 2
// API
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);
});
請問您可以添加用戶mongoose模式的問題? –
你確定它現在有效嗎? req.params.id是一個字符串,你需要查詢ObjectId。 –
更新並回答了我自己的問題...感謝您對其進行調查 – rex