Mongodb $push 运算符不起作用
Posted
技术标签:
【中文标题】Mongodb $push 运算符不起作用【英文标题】:Mongo db $push operator not working 【发布时间】:2018-04-27 08:33:35 【问题描述】:我正在尝试将数据推送到 mongo 模型中对象的数组中 通过使用 req.params 方法 但它给了我 错误:
MongoError:无法使用部分(friends of friends.username)遍历元素(friends:[])
这是我的代码:
后端
router.post('/accept/:id/:username',isLoggedIn,function(req,res)
User.findOneAndUpdate(username:req.user.username,'friendRequest._id':req.params.id,
$set:'friendRequest.$.Status':'Friend','friendRequest.$.Color':'green',function(err,founduser)
if (err)
throw err;
else
User.findOneAndUpdate(username:req.user.username,
$push:'friends.username':req.params.username
,function(err,founduser)
if (err)
throw err;
else
//Error is coming from this line
User.findOneAndUpdate(username:req.params.username,
$push:'friends.username':req.user.username
,function(err,founduser)
if (err)
throw err;
else
res.render("back");
)
)
)
)
**My Model**
var mongoose = require('mongoose');
var passportLocalMongoose = require('passport-local-mongoose');
var UserSchema = new mongoose.Schema(
username:String,
password :String,
friends:[
username: String //Here I wanna insert a data
],
前端
<form action = "/accept/<%=request._id%>/<%=request.username%>" method = "post">
<button id="add" class="ui medium <%=request.Color%> button"><%=request.Status%></button>
</form>
【问题讨论】:
【参考方案1】:需要做一点小改动:
User.findOneAndUpdate(
username: req.params.username
,
$push:
"friends":
username:req.params.username
,function(err,founduser)
if (err)
throw err;
else
res.render("back");
)
【讨论】:
以上是关于Mongodb $push 运算符不起作用的主要内容,如果未能解决你的问题,请参考以下文章
$push 到带有 mongoose 的 MongoDB 中的数组不起作用
带有 $sum 操作的 Mongodb 位置运算符“$”不起作用