mysql - bookshelfJs 中未定义的绑定(bind)错误限制返回的列

标签 mysql node.js orm bookshelf.js

服务

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/

相关文章:

mysql - 选择值和值已更改的列

node.js - 匿名函数import/no-anonymous-default-export的意外默认导出

javascript - 使用原型(prototype)时对象没有方法

node.js - Express 应用程序中未处理的拒绝

java - Android 对象处理/持久化

Django ORM 注释 : Most common group of user queryset

MySQL 到 Eloquent 查询

php - 如何从 php 函数中获取值(MySQL 查询)

php - 无法从 <select> 选项检索值以发送到 php

hibernate - 如何检查 isDirty ('transient_fieldName' ) 在 Grails 中的 transient 字段