首页 > 解决方案 > Knex,插入随机列

问题描述

我想做的是使用 knex 的 trx 将数据发布到我的数据库。当我尝试发送一个发布请求并使用以下代码处理它时,我收到此错误:

失败行包含 (4, null, , null, 2021-05-13 23:12:17.642)

我对 knex 没有太多经验,所以我不知道为什么在应该存在的三个值中有两个空值。我觉得这很简单,但我在网上找不到任何东西。

const handleAnnouncementCreation = (req, res, db) => {
    const { body } = req.body;
    db.transaction(trx => { 
        trx.insert({
            body: body,
            posted: new Date()
        }).into('news_posts').returning('id').then(id => {
            res.json(id);
        }).then(trx.commit).catch(trx.rollback);
    }).catch(err => res.status(400).json(err));
}

标签: javascriptdatabasepostgresqlknex.js

解决方案


问题是您正在尝试将一个Json值(的值body)分配到列中。

您应该使用JSON.stringify身体值。

const handleAnnouncementCreation = (req, res, db) => {
  const { body } = req.body;
  db.transaction((trx) => {
    trx
      .insert({
        body: JSON.stringify(body), // <-- 
        posted: new Date(),
      })
      .into('news_posts')
      .returning('id')
      .then((id) => {
        res.json(id);
      })
      .then(trx.commit)
      .catch(trx.rollback);
  }).catch((err) => res.status(400).json(err));
};

推荐阅读