We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
json
如题,和 #414 比较相近,也有一部分 Nullable 的问题,但似乎不太一样。 这个问题也是 v3/v4 同时有的问题。
这个问题会导致部分字段类型(比如 json 类型)无法正常使用。 因为似乎对于 ORM json 类型,只有 NULL 和 {} 这两个“空内容”能够被正常解析,而真正的“空”(无内容)是没法被解析的,会直接报 SyntaxError: Unexpected end of JSON input。 但是不对已存在的行进行初始化,同时不配置 nullable: true 的话,新增字段的初始值就不会是 NULL,而是“空”了。
{}
SyntaxError: Unexpected end of JSON input
nullable: true
const { Tables } = require('koishi') Tables.extend('channel', { test: { type: 'json', initial: { ipsum: 'lorem' } // 重点在此:配置了 initial 但是不配置 nullable: true } }) module.exports = (ctx) => { ctx .command('test') .action(async ({ session }) => { const test = await session.observeChannel(['test']) console.log(test) }) }
这里有一个比较小的能够复现这个问题的用于 v4 的插件 ,假设叫它 test.js:
test.js
test
报错内容如下面的截图。
和 #414 一样,还是想 koishi 自身有没有机制能改良一下这个行为,否则的确有点坑
然后或许可以改进一下 json 字段的解析,在空字符串的情况下也能解析成功
使用的是 mysql 数据库
所以说了半天,要不始终默认 nullable: false 吧 默认所有新增字段 primary key 和 foreign key 的 nullable: true,其他的 nullable: false 的就没有这个问题了(迫真)
The text was updated successfully, but these errors were encountered:
对已有行的初始化这一点,我测试过在字段 = NULL 的情况下做 get/observe 操作的时候是有初始值的,或许可以不做。
这个问题的另一个点在于,json 解析错误的时候就只有那一行报错,无法定位是程序的哪里报错,也无法定位是哪个数据库的哪个字段出了问题。如果能有更加详细的报错信息的话会更好。
Sorry, something went wrong.
先把这个问题限定到 ORM json 字段了,不清楚其他类型有没有类似的问题,有就再说。
JSON 无法解析空串的错误已经修复。
从新版本起 nullable 的默认值将会为 true(仍然可以手动设置为 false,后果自负)。
可能需要一些测试。
No branches or pull requests
Describe the bug
如题,和 #414 比较相近,也有一部分 Nullable 的问题,但似乎不太一样。
这个问题也是 v3/v4 同时有的问题。
这个问题会导致部分字段类型(比如
json
类型)无法正常使用。因为似乎对于 ORM
json
类型,只有 NULL 和{}
这两个“空内容”能够被正常解析,而真正的“空”(无内容)是没法被解析的,会直接报SyntaxError: Unexpected end of JSON input
。但是不对已存在的行进行初始化,同时不配置
nullable: true
的话,新增字段的初始值就不会是 NULL,而是“空”了。Steps to reproduce
这里有一个比较小的能够复现这个问题的用于 v4 的插件 ,假设叫它
test.js
:test.js
插件test
json
类型无法解析“空”内容,它只能解析 NULL 和{}
报错内容如下面的截图。
Expected behavior
和 #414 一样,还是想 koishi 自身有没有机制能改良一下这个行为,否则的确有点坑
然后或许可以改进一下 json 字段的解析,在空字符串的情况下也能解析成功
Screenshots
Versions
使用的是 mysql 数据库
Additional context
所以说了半天,要不始终默认 nullable: false 吧
默认所有新增字段 primary key 和 foreign key 的 nullable: true,其他的 nullable: false 的就没有这个问题了(迫真)
The text was updated successfully, but these errors were encountered: