【问题标题】:How to INSERT INTO an array column of postgres using postman JSON?如何使用邮递员 JSON 插入 postgres 的数组列?
【发布时间】:2020-02-05 21:33:04
【问题描述】:

我有一个带有数组列myarray text[] 的表。 我创建了一个用于插入数组的端点

exports.createVaraus = async (id, myarray) =>$    try {
        const result = await client.query('INSERT INTO mytable (id, myarray) VALUES ($1, $2) RETURNING id', 
 [id, myarray]
        );
        return result.rows[0]
    } catch (err) {
        throw new Error(err);
    }
}

现在,当我使用以下 JSON 与邮递员进行 POST 时:

{
    "id": 1,
    "myarray": {"column1": "test"}
}

我收到以下错误:

“消息”:“错误:格式错误的数组文字: \"{\"column1\":\"test\"}\""

出了什么问题以及如何正确地做到这一点?

【问题讨论】:

  • 第一{"column1": "test"}真的不是一个数组,它是一个对象,数组看起来像["val1", "val2"],第二:你的列在数据库中的类型是什么?另外,我建议使用json 字段,因为从后端(js、java 等)使用它要容易得多。
  • 将数组发布到 ["val1", "val2"]。使用 PUT 时出现错误:"message":"error: invalid input syntax for type integer: \"{\"myarray \":[\"8-10\"]}\""
  • mytable在SQL中是如何定义的?您使用的是什么 nodejs 框架,请求正文是如何传递给您的 createVaraus 函数的?
  • 已回答您要求的详细信息。很难,我真的不明白这个错误,因为该列的类型不是整数而是文本。
  • 也许我的 JSON 语法有误。有人知道如何正确放入 JSON 数组吗?

标签: node.js postgresql postman


【解决方案1】:

我的表包含 2 列:id 和 myarray。

我正在使用快递。

我的请求正文:

  exports.updateVaraus = async(request, response) => {
    try {
      let {id} = request.params;
      const varausObject = request.body;
      const updatedVaraus = await varausModel.updateVaraus(varausObject, id);
      response.status(200).send(updatedVaraus);
    } catch (err) {
      response.status(400).send({message: err.message});
    }
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-30
    • 2016-01-31
    • 2021-05-03
    • 2017-07-06
    • 2020-10-12
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多