Добрый день. Есть подключение запросы работают. Не могу понять что не так с данными. Таблица users уже была написана, в ней нет acl есть только pageaccess в виде строки. Проблема что если смотреть дебаг во время формирования то acl выходит с верными данными но если после смотреть ures то acl хранит неверные данные. В какой момент вызывается acl и надо ли делать map чтобы получить массив со всеми данными?
Запрос:
let ures = await Users.findAll({ where: {deleted: '0'}}).then(function (items) {
return items.map(x=>{
var item = x.dataValues;
item.acl = x.acl;
return item;
});
});
Модель:
var Table:UserModel = ORM.define('users', {
id: {
type: DataTypes.UUID,
primaryKey: true,
autoIncrement: true
},
acl: {
allowNull: false,
type: DataTypes.VIRTUAL,
get: function () {
var pageaccess = this.getDataValue('pageaccess');
var result = defaultObject;
if (!pageaccess || pageaccess == 'null'){
defaultOk.forEach(k => result[k] = true);
} else {
pageaccess.split(/,/).forEach(x => result[x] = true);
return result;
}
},
set: function (val) {
var acl = val;
var pageaccess = Object.keys(acl).filter(k=>acl[k]).join(',');
this.setDataValue('pageaccess', pageaccess);
}
},
pageaccess: {
type: DataTypes.STRING,
},
deleted: {
type: DataTypes.INTEGER,
}
},{
getterMethods : {},
setterMethods : {},
classMethods: {
setAcl: function(key: string, value: boolean) {
if (!this._acl) var q = this.acl;
this._acl[key] = value;
this.pageaccess = Object.keys(this._acl).filter(k=>this._acl[k]).join(',');
}
});
export var Users = Table;