【发布时间】:2020-04-11 04:10:35
【问题描述】:
我正在尝试将用户的选择作为字符串推送到他们的选择数组中并返回更新后的文档。
路由和函数成功运行,但是它返回带有空选择数组的用户。我相信问题出在控制器功能的某个地方,但我无法弄清楚。 非常感谢任何帮助!
为了提供帮助,这是我的控制台的屏幕截图,您可以在其中看到一个空的选择数组被返回。 Here is an image of my console.log
这是我调用函数的地方
handleAnswerInput = (question) => {
let answerTextSelected = question.Text;
let answerTypeSelected = question.Type;
let usersName = this.state.user._id
this.setState({
count: this.state.count + 1
})
saveUserandScore(usersName, answerTextSelected)
.then(
this.loadQuestion(this.state.count)
)
console.log(answerTextSelected)
console.log(answerTypeSelected)
};
这是控制器功能(根据建议更新)
const saveUserAndTheirScore = (req, res) => {
let filter = { _id: req.params.id }
// let update = { choices: req.params.answer] }
console.log(req.params.id)
console.log(req.params.answer)
User.update(
{ filter },
{
$push: { choices: req.params.answer }
},
{
returnOriginal: false,
},
)
.then(dbData => res.json(dbData))
.catch(err => {
console.log(err);
res.json(err);
});
};
这里是 axios 调用
export const saveUserandScore = (id, answer) => {
return axios.post(`/api/user/${id}/${answer}`);
};
【问题讨论】:
-
再传递一个参数给你的 findOneAndUpdate
let doc = await Character.findOneAndUpdate(filter, update, { new: true }); -
@Helpinghand:该选项在猫鼬中被命名为
new。 mongodb驱动有一个不同的选项returnOriginal。 -
大家好!谢谢您的帮助。不幸的是,这不起作用
-
@JackFranklin 你在用猫鼬,对吧?然后是ˋnewˋ选项。另外,在您的最新代码中,您没有使用 findAndUpdate,而只是更新?
标签: javascript node.js reactjs mongodb express