【问题标题】:json data save into postgresql become different orderjson数据保存到postgresql变成不同的顺序
【发布时间】:2016-11-12 20:48:48
【问题描述】:

当我将数据保存到表中时,然后从表中选择它变成不同的顺序,我也检查了 pgadmin。
为什么??以及如何解决?

CREATE TABLE IF NOT EXISTS "user_role_track"(
    "id" SERIAL NOT NULL,
    "create_date" timestamp without time zone,
    "create_by_user_id" integer,
    "action" integer,
    "old_data" jsonb,
    "new_data" jsonb
  );

在 nodejs 应用中创建数据

var newData = {
  "id": userRoleId,
  "create_date": timestamp,
  "user_id": userId,
  "role": role
};
... 

// save with promise sync function
var dbQueryR = yield Promise.resolve( queryPromise(dbClient, dbQuery, dbParams) );

从表中选择/看穿pgadmin

"{"id": 2, "role": 1, "user_id": 17, "create_date": "2016-07-11 09:09:18"}"

【问题讨论】:

  • 由于 DBMS 的优化,无法保证数据存储的顺序。如果您需要特定的订单,您应该使用ORDER BY 来获取结果。
  • 如果您关心键的顺序,请使用json 而不是jsonb 类型。
  • @Abelisto 谢谢。但我认为 jsonb 非常适合我的需要

标签: json node.js postgresql jsonb


【解决方案1】:

如果我理解你的意思,你的 json 元素在插入后会混淆吗?..

那就看json specs

对象是一组无序的名称/值对

JSON order mixed up中所述

您不能也不应该依赖于 JSON 对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    相关资源
    最近更新 更多