无法更改存储在Nodejs中的mongoDb数据库中的数据

时间:2017-11-13 11:56:06

标签: javascript html node.js mongodb mongoose

我想在将数据提交到数据库后更改按钮值,我已经为按钮文本分配了一个变量,并试图从后端设置它的值 但它无法正常工作

这是我的代码

BACKEND

//after click action
 router.post('/accept/:id',isLoggedIn,function(req,res){

 User.findByIdAndUpdate(req.user._id, {$set:
        {'friendRequest.Status':'Accepted'}},function(err,founduser){
          if (err) {
            console.log(err);
          } else {

               res.render('friendrequest',{user:founduser});
          }
        })
    })

数据库模型

这里我把按钮的默认值设置为"接受"应更改为已接受

    var  mongoose = require('mongoose');
    var passportLocalMongoose = require('passport-local-mongoose');

    var UserSchema = new mongoose.Schema({
    username:String,
    password :String,



      friendRequest:[{      //Target database model
        id:{
        type : mongoose.Schema.Types.ObjectId,
        ref : "User"
      },
        username: String,
     Status:{type:String,default:"Accept" }  //default value of button  
    }]



    UserSchema.plugin(passportLocalMongoose);

    module.exports = mongoose.model("User",UserSchema);

前端

  
 <h3 id='username'><%= request.username %></h3>  

</div>
<div  class="four wide column">
<form  action = "/accept/<%=user.id%>" method = "post">
<button id="add" class="ui  medium  blue button"><%=request.Status%>
</button> 
</form>

或者,如果您可以建议哪种其他方法可以解决这个问题

1 个答案:

答案 0 :(得分:0)

要更新数组中的对象,请使用$来匹配所有索引:

{$set: {'friendRequest.$.Status':'Accepted'}}

这会将用户的所有friendRequest更新为已接受状态。