【问题标题】:Azure Mobile Services - UpdateAsync Does Not Update All FieldsAzure 移动服务 - UpdateAsync 不更新所有字段
【发布时间】:2015-05-25 20:08:13
【问题描述】:

我正在使用 Azure 移动服务,但遇到了“UpdateAsync”方法的问题。对于我存储在我的项目中的许多属性,UpdateAsync 方法工作得很好。对于其他人来说,更新完全被忽略了。有没有人遇到过这样的问题?我打的电话没什么花哨的,代码如下。

似乎属性未更新的问题可能仅限于名称中包含数字的属性。例如 CP20M 是我没有通过这种方法更新的属性之一。另一个属性,“重量”更新没有问题。两者都是双打。这有任何意义吗?我更新这些似乎有效的字段的唯一方法是删除条目并插入一个新条目。这将为所有属性获取适当的值。

感谢任何想法。

public async Task UpdateUserProfileItemAsync(UserProfile userProfile)
{
    await _userProfileTable.UpdateAsync(userProfile);
    await SyncAsync();
}

【问题讨论】:

  • 当您通过 REST API 调用 PATCH 时,该对象是什么样的? CP20M 字段是否存在?可能是您的 JSON 序列化程序设置正在删除默认值。
  • 感谢您的评论。我仍在学习 Azure 移动服务的基本知识,执行此测试的最佳方法是什么?
  • 我喜欢使用 Postman(它是一个 chrome 扩展)来发送 REST API 调用。因此,您将对 /table/tablename/recordid 进行 PATCH,其内容类型标头为 application/json 和对象的主体。 (例如 { "CP20M": 20.5, "Weight": 100.0 })并查看返回的内容。此外,默认情况下,您需要使用应用程序密钥的值指定 X-ZUMO-APPLICATION 标头。
  • 感谢您的信息。我做了这个测试并对我的对象做了一个补丁,我更新了重量和 CP20M。响应正常,响应的正文部分包含我的对象,CP20M 为旧值,重量为新值。数据库也只更新了重量。 CP20M 保持其先前的价值。知道是什么原因造成的吗?
  • 作为更新,我已将麻烦的字段从 CP20M 重命名为 CpTwentyM,现在它工作得很好。我仍然想弄清楚这一点,但我现在确实有一个解决方法。

标签: c# azure azure-mobile-services


【解决方案1】:

只需重命名您遇到问题的字段即可。它对我有用。

【讨论】:

  • 这是一个很好的解决方法。不幸的是,我从来没有发现为什么会出现这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多