我正在尝试将值推送到mongodb集合arrayList(user.completed),但即使我的代码看起来正确,它也没有得到更新。
当我进行API调用时,值正在传递但是“$ push”没有为已完成的数组添加值!我在这里缺少什么?
当我尝试将值推送到字符串时,我得到了预期的mongoose错误。但是,当我尝试将值推送到未定义的键('abc')时,不会像mongodb文档建议的那样创建新数组!不确定这里发生了什么!
// Mongodb数据
{
"_id" : ObjectId("58aa2eb1de7b414237b93981"),
"email" : "test@gmail.com",
"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);
});
答案 0 :(得分:1)
使用<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<a class="quick-search-container">
<span class="icon">
<i (click)="initQuickSearch()" class="fa fa-search"></i>
</span>
<input type="search" id="search" placeholder="Search...">
<span class="selector">
<select class="quick-search-selector" id="selector">
<option>VIN</option>
<option>Make</option>
<option>Model</option>
<option>Cow</option>
</select>
</span>
</a>
来停止数组中相同数据的复制
$addToSet
如果已经包含该项,则不会将该项添加到给定字段,但$addToSet
会将给定值添加到字段中是否存在。
$push
答案 1 :(得分:0)
发现问题!我重构了代码但没有改变用户模型。我改变了'游戏'完成&#39;完成&#39;在所有地方,但用户模型。因此,查询失败。我希望,mongoose会给我一个更好的错误然后只是{ok:0,n:0,nModified:0}