【问题标题】:Stitch function updateOne errors "update not permitted"缝合功能 updateOne 错误“不允许更新”
【发布时间】:2019-04-23 07:36:01
【问题描述】:

我有一个 Stitch 函数可以做几件事,但在这一行出现错误:

try {
  // voteAsObjectId is the Id of the photo to vote converted to BSON.ObjectId.
  await db
    .collection('photos')
    .updateOne({ "_id": voteAsObjectId }, { "$inc": { votes: 1 }});
} catch (err) {
  throw new Error("An error occurred while updating photo's votes:" + err);
}

错误如下:

StitchError: update not permitted

这似乎是与权限相关的错误,但我的应用程序中有一些其他功能,它们成功运行了对该集合的每个 .find .insert.aggregate 查询,只有 .updateOne.updateMany 操作给我带来了麻烦。

我的收藏权限如下所示:

这是我的架构:

这是一个示例文档:

【问题讨论】:

  • 您的规则的 Apply When 表达式是什么? (即当你点击铅笔时)
  • @ChrisBush 这是{}
  • 转到“用户”和“查看活动”以获取有关错误的更多信息

标签: mongodb mongodb-stitch


【解决方案1】:

我建议检查以下内容:

  1. 检查架构选项卡,查看您的文档中是否有任何不符合配置架构的内容。架构的默认配置可能与文档的实际架构不匹配。您可能需要修改此架构以使更新正常工作。

  2. 单击“默认”角色上的编辑按钮(铅笔),然后选中角色的“应用时间”。您尝试更新的文档可能与任何角色都不匹配,并且该角色需要更新。

如果这不起作用,请单击侧边栏上的“日志”按钮检查应用程序日志: Logs tab

您可以在此处看到“不允许更新”错误,但提供有关更新失败原因的更多详细信息。

【讨论】:

  • 错误来自日志,没有其他信息(除了导致它的函数及其参数)。我多次检查了架构,这对我来说似乎是正确的,但如果您认为这是问题所在,我会添加屏幕截图。 Apply When设置为{},不知道对不对。
  • Apply 设置为 {} 意味着该角色将适用于每个文档,因此这可能不是问题。您能否发送您收藏的架构屏幕截图和示例文档?
  • 嗯,我想知道是否存在一个错误,它在进行增量时出于某种原因试图将数字转换为 int32。如果您从模式中完全省略“投票”会发生什么? (我们隐含地允许所有字段为任何时间,因此如果“投票”字段有问题,这应该会使错误消失。)
  • 我尝试使用 $set 更新“title”字段,但仍然报同样的错误。
  • 您尝试更新的文档是否可能包含与架构不匹配的字段,因为它们是在 Stich 之外插入的?换句话说,您可以运行“await db.collection('photos') .findOne({ "_id": voteAsObjectId })”并打印文档以确保它与架构匹配吗?
猜你喜欢
  • 2018-11-13
  • 2023-03-23
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-29
  • 2015-11-09
  • 2021-12-11
相关资源
最近更新 更多