NodeJS 更新objectionjs中的json字段会在字段列表中抛出未知列“lng

rn0zuynd  于 2023-03-01  发布在  Node.js
关注(0)|答案(1)|浏览(59)

我有一个nestjs应用程序,我使用objectionjs和knex与我的mysql数据库通信。地址字段是一个json,如:

data = {
   address: { lat: 12, lng: 20 }
}

每当我使用以下命令运行更新时:

this.personRepository
      .query()
      .update(data)
      .where('id', person.id)
      .execute()

我一直得到这个错误-未知列'lng'在'字段列表'
完全误差如下所示:

update `persons` set `address` = {"lat":12,"lng":20}, `updatedAt` = '2023-02-28 23:27:39.476' where `id` = X'1234567'

请帮我指出我做错了什么。

uqjltbpv

uqjltbpv1#

JSON字段应该通过将jsonSchema address属性定义为对象来自动字符串化。

class Person extends Model {
  static get jsonSchema() {
    return {
      type: 'object',
      properties: {
        address: { 
          type: 'object',
          properties: {
            lat: { type: 'number' },
            lng: { type: 'number' },
          },
        },
      },
    }
  }
}

或者,如果您没有架构,请设置Model上的jsonAttributes属性。

class Person extends Model {
  static get jsonAttributes() {
    return ['address'];
  }
}

相关问题