代码之家  ›  专栏  ›  技术社区  ›  DoArNa

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

  •  0
  • DoArNa  · 技术社区  · 7 年前

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

    private mapObject = new Map<string, string>();
    mapObject(firstString) = secondString;
    

    然后将其推送到数据库。

    我如何在nodejs中创建这样一个对象,不确定是否需要javascript hashmap对象,或者如何创建? 我正在使用nodejs和pg库连接到postgres数据库

    0 回复  |  直到 7 年前
        1
  •  0
  •   Wicak    7 年前

    也许我会用 sequelizejs (Node.js v4及更高版本基于promise的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 文档

        2
  •  0
  •   Israel Cunha    5 年前

    用于输入和输出的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'
    
    推荐文章