fix(client): string operators "contains/does not contains" should handle null value (#5509)

This commit is contained in:
YANG QIA 2024-10-25 08:27:22 +08:00 committed by GitHub
parent 95aeb343f2
commit 18d31564b3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 11 additions and 0 deletions

View File

@ -12,6 +12,7 @@ const TYPE_TO_ACTION = {
belongsTo: 'get',
hasOne: 'get',
belongsToMany: 'list?pageSize=9999',
belongsToArray: 'get',
};
export const getAction = (type: string) => {
if (process.env.NODE_ENV !== 'production' && !(type in TYPE_TO_ACTION)) {

View File

@ -16,6 +16,11 @@ function escapeLike(value: string) {
export default {
$includes(value, ctx) {
if (value === null) {
return {
[Op.is]: null,
};
}
if (Array.isArray(value)) {
const conditions = value.map((item) => ({
[isPg(ctx) ? Op.iLike : Op.like]: `%${escapeLike(item)}%`,
@ -32,6 +37,11 @@ export default {
},
$notIncludes(value, ctx) {
if (value === null) {
return {
[Op.not]: null,
};
}
if (Array.isArray(value)) {
const conditions = value.map((item) => ({
[isPg(ctx) ? Op.notILike : Op.notLike]: `%${escapeLike(item)}%`,