mirror of
https://gitee.com/nocobase/nocobase.git
synced 2024-12-01 03:38:32 +08:00
fix array field update
This commit is contained in:
parent
8765df13ac
commit
feea1bef48
@ -40,6 +40,50 @@ describe('array field operator', function () {
|
||||
});
|
||||
});
|
||||
|
||||
test('array field update', async () => {
|
||||
const Post = db.collection({
|
||||
name: 'posts',
|
||||
fields: [
|
||||
{ type: 'array', name: 'tags' },
|
||||
],
|
||||
});
|
||||
|
||||
|
||||
await db.sync({force: true})
|
||||
|
||||
await Post.repository.create({})
|
||||
const p1 = await Post.repository.create({
|
||||
values: {
|
||||
tags: ['t1', 't2']
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
let result = await Post.repository.findOne({
|
||||
filter: {
|
||||
'tags.$match': ['t2', 't1']
|
||||
}
|
||||
})
|
||||
|
||||
expect(result.get('id')).toEqual(p1.get('id'))
|
||||
|
||||
await Post.repository.update({
|
||||
filterByPk: <number>p1.get('id'),
|
||||
values: {
|
||||
tags: ['t3', 't2']
|
||||
}
|
||||
})
|
||||
|
||||
result = await Post.repository.findOne({
|
||||
filter: {
|
||||
'tags.$match': ['t3', 't2']
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
expect(result.get('id')).toEqual(p1.get('id'))
|
||||
});
|
||||
|
||||
test('nested array field', async () => {
|
||||
const User = db.collection({
|
||||
name: 'users',
|
||||
|
@ -12,6 +12,7 @@ export class ArrayField extends Field {
|
||||
|
||||
sortValue(model) {
|
||||
const oldValue = model.get(this.options.name);
|
||||
console.log({oldValue})
|
||||
if (oldValue) {
|
||||
const newValue = oldValue.sort();
|
||||
model.set(this.options.name, newValue);
|
||||
@ -21,16 +22,13 @@ export class ArrayField extends Field {
|
||||
bind() {
|
||||
super.bind();
|
||||
|
||||
if (this.isSqlite()) {
|
||||
this.collection.model.addHook('beforeCreate', 'array-field-sort', this.sortValue.bind(this));
|
||||
}
|
||||
this.on('beforeSave', this.sortValue.bind(this));
|
||||
|
||||
}
|
||||
|
||||
unbind() {
|
||||
super.unbind();
|
||||
if (this.isSqlite()) {
|
||||
this.collection.model.removeHook('beforeCreate', 'array-field-sort');
|
||||
}
|
||||
this.off('beforeSave', this.sortValue.bind(this));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user