reactjs - 即使是状态 200,我的更新数据也不会反映
问题描述
我想通过更新来增加玩家的分数。这是电话。
const addPlayerScore = async (score, currentPlayer) => {
try {
const addScore = {
score: score,
};
const { data } = await fetchContext.authAxios.patch(
`/facilitator/add-score-player-team-one/${currentPlayer}`,
addScore
);
console.log(data.message);
} catch (error) {
const { data } = error.response;
console.log(data.message);
}
};
currentPlayer获取玩家的id。我将其传递给参数。
这是请求;
exports.addscoreplayerteamone = async (req, res) => {
try {
const { score } = req.body;
const existLive = await LiveMatch.findOneAndUpdate(
{
'teamOne.players._id': req.params.id,
},
{
$set: {
$inc: {
'teamOne.players.$.scores': score,
},
},
},
{ new: true }
);
const addPlayerScore = await existLive.save();
res
.status(200)
.send({ message: "Added the player's score", addPlayerScore });
} catch (error) {
console.log(error);
return res.status(400).json({
message: 'There was a problem adding a score',
});
}
};
这是架构;
const mongoose = require('mongoose');
const liveSchema = new mongoose.Schema(
{
schedule: {
type: mongoose.Types.ObjectId,
required: true,
},
user: {
type: mongoose.Types.ObjectId,
required: true,
},
teamOne: {
teamName: {
type: String,
required: true,
trim: true,
max: 50,
},
players: [
{
name: {
type: String,
required: true,
trim: true,
max: 50,
},
jerseyNumber: {
type: String,
required: true,
trim: true,
},
scores: {
type: Number,
default: 0,
trim: true,
},
fouls: {
type: Number,
trim: true,
},
},
],
score: {
type: Number,
trim: true,
default: 0,
},
},
teamTwo: {
teamName: {
type: String,
required: true,
trim: true,
max: 50,
},
players: [
{
name: {
type: String,
required: true,
trim: true,
max: 50,
},
jerseyNumber: {
type: String,
required: true,
trim: true,
},
scores: {
type: Number,
default: 0,
trim: true,
},
fouls: {
type: Number,
trim: true,
},
},
],
score: {
type: Number,
trim: true,
default: 0,
},
},
gameEvent: {
type: String,
required: true,
enum: ['basketball', 'volleyball', 'soccer'],
},
winner: {
type: String,
trim: true,
},
loser: {
type: String,
trim: true,
},
},
{ timestamps: true }
);
module.exports = mongoose.model('live-match', liveSchema);
它返回状态 200,但它不会增加数据库中玩家的分数,也不会反映在前端。
解决方案
尝试这个:
const existLive = await LiveMatch.findOneAndUpdate(
{
'teamOne.players._id': req.params.id,
},
{
$inc: { 'teamOne.players.scores': score }
},
{
new: true
}
);
推荐阅读
- google-play-services - 禁用 Cast SDK 数据分析
- openldap - 使用 OpenLDAP 的 Freeradius3 身份验证
- javascript - 在javascript中每秒从txt加载行到MYSQL
- sql - 用于获取特定模式的 SQL 命令
- testing - 这个问题有什么解决方案吗..我想通过使用 appium 在 testng.xml 中运行多个类以实现移动自动化
- regex - Sublime Text 3:使用简单的正则表达式创建片段
- scala - 在 Scala 中使用 QueryParamDecoder 解码可选的查询参数
- python - 在 Kivy 应用程序启动时满足特定条件时如何自动弹出警报
- arrays - 如何从 JSON 数组中返回特定范围的索引?
- python - ValueError:要解包的值太多(预期为 2):pandas