【问题标题】:Azure Mobile Service, how to only update or ignore update some columnsAzure 移动服务,如何只更新或忽略更新某些列
【发布时间】:2016-12-13 03:11:17
【问题描述】:

我在表中有一个项目并更新了一些列值并将其更新到数据库中。 但是为什么这个 Datetimeoffset 列会自动更改为另一个时区?

  1. 这是数据库中的一个项目

  1. 使用 javascript 后端读取和更新它

request.service.tables.getTable('Ticket')
.where({ id: ticketId }).read({
  systemProperties: ['__createdAt', '__updatedAt'],
  success: function (result) {
    if (result.length === 0) {
      console.log("ticket does not exist");
      response.send(statusCodes.NOT_FOUND, { message: "ticket does not exist" });
    }
    //Exists; update it
    else {
      // do update some column
      //...
      //...
      request.service.tables.getTable('Ticket').update(result[0]);
      }
  1. 我没有更改 DatetimeOffset 列的值,但它已更改。

如何忽略更新?

【问题讨论】:

  • 表上应该有一个默认约束来更新 datetimeoffset 值..检查您是否是这种情况..

标签: node.js azure azure-sql-database azure-mobile-services


【解决方案1】:

可以看到实际时间值是等价的,第一个包含时区偏移量。您应该能够在客户端上调用 ToLocalTime 以将日期调整回本地时间(或您的客户端平台的任何等效时间)。

【讨论】:

    【解决方案2】:

    基本上,DateTimeOffset 值在服务器端被解释为 JavaScript Date 对象,因此它们没有任何关于偏移的信息(在 JS 中,日期表示为自“Unix 0”,1970/ 以来的毫秒数01/01:00:00:00 UTC)。结果是偏移在平移中丢失了,这是一个问题。
    => 所以,日期时间偏移列应该是 UTC 格式。

    我发现了一篇关于这个问题的帖子: https://blogs.msdn.microsoft.com/carlosfigueira/2013/05/13/preserving-date-time-offsets-in-azure-mobile-services/

    【讨论】:

    • 除此之外,该博客文章适用于 Azure 移动服务,并且可能不适用于 Azure 移动应用,因为 Azure 移动应用是一个完全不同的 Node 端代码库。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-10
    • 2023-04-10
    • 2020-06-20
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    相关资源
    最近更新 更多