如何构建对象并将其存储为postgres上的hstore类型

时间:2019-02-16 03:58:48

标签: node.js postgresql hashmap pg

我试图在nodejs上构建对象,然后将其作为hstore数据类型存储到Postgres数据库。 例如,在Java中,您将执行以下操作:

rm objects/70/574e5c0d5f1fb820f66fd3fd3a3c0c4ed398bb # blob id of file to be removed
git write-tree # copying output
echo "removing file" | git commit-tree <copied id from previous command> -p <previous HEAD> # copying ouput
git update-ref refs/heads/master <copied id from previous command>

,然后将其推送到数据库。

我如何在nodejs中创建这样的对象,不确定是否需要一个JavaScript哈希图对象,或者该怎么办? 我正在使用nodejs和pg库连接到Postgres数据库

2 个答案:

答案 0 :(得分:0)

也许我会使用sequelizejs(Node.js v4及更高版本的基于承诺的ORM)来回答。

const User = sequelize.define('user', {
  firstName: {
    type: Sequelize.STRING
  },
  lastName: {
    type: Sequelize.STRING
  }
});

// force: true will drop the table if it already exists
User.sync({force: true}).then(() => {
  // Table created using object format
  return User.create({
    firstName: 'John',
    lastName: 'Hancock'
  });
});

//optional to use anything you want

这是sequelizejs文档中的代码。

答案 1 :(得分:0)

hstore的文本表示形式,用于输入和输出,包括零个或多个以逗号分隔的键=>值对。一些例子:

k => v
foo => bar, baz => whatever
"1-a" => "anything at all"

下一步是安装Sequelize和一些其他依赖项:

npm install --save sequelize pg pg-hstore

使用:

field_name: {
        type: Sequelize.HSTORE()
      },

当前功能

User.findOne({
  where: {
    hstore_field: {
      fieldOne: 'some_value',
    },
  },
});

会产生

SELECT *
FROM Users
WHERE hstore_field = '"fieldOne" => "some_value"'
New functionality
User.findOne({
  where: {
    hstore_field: {
      $contains: {
        fieldOne: 'some_value',
      },
    },
  },
});

会产生

SELECT * FROM Users
WHERE hstore_field -> 'fieldOne' = 'some_value'