【问题标题】:Not able to change data stored in mongoDb database in Nodejs无法更改 Nodejs 中存储在 mongoDb 数据库中的数据
【发布时间】:2018-04-26 02:29:48
【问题描述】:

我想在将数据提交到数据库后更改按钮值,我已经为按钮文本分配了一个变量并尝试从后端设置它的值 但它不起作用

这是我的代码

后台

//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>

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

【问题讨论】:

  • 您的friendRequest 是一个数组,而您将其更新为一个对象。 {'friendRequest[0].Status':'Accepted'} 更有意义

标签: javascript html node.js mongodb mongoose


【解决方案1】:

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

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

这会将用户的所有friendRequest更新为Accepted状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 2015-12-28
    • 2011-08-23
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    相关资源
    最近更新 更多