Неопределенная привязка (ий) ошибка в bookshelfJs для ограничения возвращаемых столбцов
ОКАЗАНИЕ УСЛУГ
var Model = require('./../models');
var myService = function (query_params, callback) {
Model.User
.forge()
.fetch({
withRelated: [{
'org': function (qb) {
qb.column('id', 'name');
},
'role': function (qb) {
qb.column('id', 'role');
}
}]
})
.then(function (collection) {
return callback(null, collection);
})
.catch(function (err) {
return callback(err, null);
});
};
МОДЕЛЬ
var User = Bookshelf.Model.extend({
tableName: 'user',
org : function () {
return this.belongsTo(Org, 'org_id');
},
role : function () {
return this.belongsTo(Role, 'role_id');
}
});
var Users = Bookshelf.Collection.extend({
model: User
});
var Org = Bookshelf.Model.extend({
tableName: 'org',
user : function () {
return this.hasMany(User);
}
});
var Orgs = Bookshelf.Collection.extend({
model: Org
});
var Role = Bookshelf.Model.extend({
tableName: 'roles',
user: function() {
return this.hasMany(User);
}
});
module.exports = {
User: User,
Users: Users,
Org: Org,
Orgs: Orgs
};
На выходе я получаю все поля пользовательских данных и указанное поле соответствующей таблицы пользователя и роли,
Как я могу ограничить поля для пользовательской таблицы.
Я попробовал это:
.fetch({
withRelated: [{
'org': function (qb) {
qb.column('id', 'name');
},
'role': function (qb) {
qb.column('id', 'role');
}
}],
columns : ['id']
})
Однако я получаю сообщение об ошибке:
Error: Undefined binding(s) detected when compiling SELECT query:
1 ответ
Это была небольшая ошибка, я не передавал org_id и role_id в возвращаемом столбце parent, с которым будет происходить привязка для таблицы детей.
.fetch({
withRelated: [{
'org': function (qb) {
qb.column('id', 'name');
},
'role': function (qb) {
qb.column('id', 'role');
}
}],
columns : ['id','org_id','role_id']
})