将JSON数据保存到PostgreSQL后顺序不同

5

我将数据保存到表中,但当从表中进行选择时,它的顺序变得不同了,我在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
  );

在Node.js应用程序中创建数据

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"}"

1
由于数据库管理系统所做的优化,存储的数据顺序不能保证。如果您需要特定的顺序,应使用“ORDER BY”来获取结果。 - mauris
4
如果您关心键的顺序,请使用 json 类型而不是 jsonb 类型。 - Abelisto
@Abelisto 謝謝。但我認為jsonb更適合我的需求。 - user1775888
1个回答

3
如果我理解正确,您的json元素在插入后混乱了吗?那么请查看json规范中所述:

一个对象是一个无序的名称/值对集合。

JSON order mixed up所述:

您不能也不应该依赖于JSON对象内元素的顺序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接