我想在将数据提交到数据库后更改按钮值,我已经为按钮文本分配了一个变量,并试图从后端设置它的值 但它无法正常工作
这是我的代码
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>
或者,如果您可以建议哪种其他方法可以解决这个问题
答案 0 :(得分:0)
要更新数组中的对象,请使用$来匹配所有索引:
{$set: {'friendRequest.$.Status':'Accepted'}}
这会将用户的所有friendRequest更新为已接受状态。