服务
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:
最佳答案
这是一个小错误,我没有在父表的返回列中传递 org_id 和 role_id,子表将与该表进行绑定(bind)。
.fetch({
withRelated: [{
'org': function (qb) {
qb.column('id', 'name');
},
'role': function (qb) {
qb.column('id', 'role');
}
}],
columns : ['id','org_id','role_id']
})
关于mysql - bookshelfJs 中未定义的绑定(bind)错误限制返回的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44289444/