gpt4 book ai didi

javascript - Meter 将新对象推送到集合中的数组

转载 作者:行者123 更新时间:2023-12-03 04:48:34 27 4
gpt4 key购买 nike

我正在尝试通过推送到集合中已存在的数组来更新集合。

这是我尝试运行的更新函数:

Games.update({ _id: game._id }, {
$push: { players: { name: playerName } },
});

这是我在控制台中遇到的错误:

update failed: MongoError: Cannot update 'players' and 'players' at the same time

相关架构:

Player = new SimpleSchema({
name: {
type: String,
label: 'name',
max: 50,
},
});

Schemas.Game = new SimpleSchema({
...
players: {
type: [Player],
label: 'Players',
autoValue: function () {
return [];
},
},
});

我使用 autoValue 作为 players 数组,以便在创建新游戏时对其进行初始化。当添加第一个玩家时这会是一个问题吗?

一些帮助将不胜感激。

最佳答案

已编辑: @Logiwan992 尝试使用 defaultValue 而不是 autoValue。我相信您正在使用 autoValue 来设置 players 的值,因此它不是未定义的。但通过您的实现,当文档有更新时,autoValue 将运行。

defaultValue 将在首次创建文档时运行。但如果您仍然选择使用 autoValue,您可能还需要检查它是否是更新并返回 undefine。就像这样


玩家:{
类型:[玩家],
标签:“玩家”,
自动值:函数(){
if (this.isUpdate) {
返回未定义;
}
返回 [];
},
},

返回未定义将确保使用新的更新值。我的建议是使用


玩家:{
类型:[玩家],
标签:“玩家”,
默认值: [],
},

关于javascript - Meter 将新对象推送到集合中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42760359/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com