如何 post 请求 mern 栈中数组的特定字段
How to post request for a particular field of array in mern stack
代码没有在answers数组中添加answer......请说明如何编写正确的实现方式?
'id' 是问题,用于参数。
架构:
const QuestionSchema = new mongoose.Schema({
qtitle:{
type:String,
required:true
},
descofq:{
type:String,
required:true
},
pic:{
type:String,
default:"no photo"
},
answers:[
{
answer:{
type:String,
required:false
},
picofa:{
type:String,
default:"no photo"
},
postedBy:{
type:mongoose.Schema.Types.ObjectId,
ref:"USER"
}
}
]
}
})
POST 请求:
router.post('/answer/:id',authenticate,(req,res)=>{
Question.findById(req.params.id).then(question=>{
question.answers.answer = req.body.answer;
question.save().then(result=>{
res.json(result)
}).catch(err=>{
res.status(400).send(err);
})
}).catch(err=>{
res.status(200).send(err);
})
})
我也试过了question.answers.answer.push(answer);
括号中的答案将从 req.body 获取,但这也没有用。
你的答案是一个数组。您不能将值设置为对象。
如果要将对象添加到数组。让我们使用推送功能。
例如:
question.answers.push({ 回答: req.body.answer, postedBy: “userId” });
question.save()
答案字段是一个数组,您应该指定哪个答案
内部答案数组
router.post('/answer/:id',authenticate,(req,res)=>{
Question.findById(req.params.id).then(question=>{
question.answers.push(req.body.answers);
question.save().then(result=>{
res.json(result)
}).catch(err=>{
res.status(400).send(err);
})
}).catch(err=>{
res.status(200).send(err);
})
})
Example:
req.body.answers = { answer: "bla bla..", picofa: "bla bla", postedBy: userId }
另一种解法:
router.post('/answer/:id',authenticate,(req,res)=>{
Question.findById(req.params.id).then(question=>{
question.answers[0].answer = req.body.answer;
question.save().then(result=>{
res.json(result)
}).catch(err=>{
res.status(400).send(err);
})
}).catch(err=>{
res.status(200).send(err);
})
})
代码没有在answers数组中添加answer......请说明如何编写正确的实现方式? 'id' 是问题,用于参数。
架构:
const QuestionSchema = new mongoose.Schema({
qtitle:{
type:String,
required:true
},
descofq:{
type:String,
required:true
},
pic:{
type:String,
default:"no photo"
},
answers:[
{
answer:{
type:String,
required:false
},
picofa:{
type:String,
default:"no photo"
},
postedBy:{
type:mongoose.Schema.Types.ObjectId,
ref:"USER"
}
}
]
}
})
POST 请求:
router.post('/answer/:id',authenticate,(req,res)=>{
Question.findById(req.params.id).then(question=>{
question.answers.answer = req.body.answer;
question.save().then(result=>{
res.json(result)
}).catch(err=>{
res.status(400).send(err);
})
}).catch(err=>{
res.status(200).send(err);
})
})
我也试过了question.answers.answer.push(answer); 括号中的答案将从 req.body 获取,但这也没有用。
你的答案是一个数组。您不能将值设置为对象。 如果要将对象添加到数组。让我们使用推送功能。
例如: question.answers.push({ 回答: req.body.answer, postedBy: “userId” }); question.save()
答案字段是一个数组,您应该指定哪个答案 内部答案数组
router.post('/answer/:id',authenticate,(req,res)=>{
Question.findById(req.params.id).then(question=>{
question.answers.push(req.body.answers);
question.save().then(result=>{
res.json(result)
}).catch(err=>{
res.status(400).send(err);
})
}).catch(err=>{
res.status(200).send(err);
})
})
Example:
req.body.answers = { answer: "bla bla..", picofa: "bla bla", postedBy: userId }
另一种解法:
router.post('/answer/:id',authenticate,(req,res)=>{
Question.findById(req.params.id).then(question=>{
question.answers[0].answer = req.body.answer;
question.save().then(result=>{
res.json(result)
}).catch(err=>{
res.status(400).send(err);
})
}).catch(err=>{
res.status(200).send(err);
})
})