Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Node knex Bookshelf-使用带有fetch的动态where子句_Node.js_Postgresql_Knex.js_Bookshelf.js - Fatal编程技术网

Node.js Node knex Bookshelf-使用带有fetch的动态where子句

Node.js Node knex Bookshelf-使用带有fetch的动态where子句,node.js,postgresql,knex.js,bookshelf.js,Node.js,Postgresql,Knex.js,Bookshelf.js,我需要修改一个现有的查询,该查询获取带有相关项的模型实例,以便根据是否提供了搜索项或ID动态更改where子句 如果我从以下内容修改原始内容: return db.model('Users').where('id', userId) .fetch({withRelated: [ 'userNames.userMessages', { ... }, ]}).then(function(user) { 对此

我需要修改一个现有的查询,该查询获取带有相关项的模型实例,以便根据是否提供了搜索项或ID动态更改
where
子句

如果我从以下内容修改原始内容:

return db.model('Users').where('id', userId)
      .fetch({withRelated: [
        'userNames.userMessages',
        {
          ...
        },
      ]}).then(function(user) {
对此,我得到了errordb.model(…)。fetch不是一个函数

    var query = db.model('Users')
      .fetch({withRelated: [
        'userNames.userMessages',
        {
          ...
        },
      ]});

    if (userId) {
      query.where('id', userId);
    } else if (searchTerm) {
      query.where('name', 'like', '%' + searchTerm + '%');
    }

    query.then(function(user) {
fetch()
db.model('Users')
单独就像一个“类”,只有可用的

因此,动态查询的一个可能解决方案是:

var query = db.model('Users')
  .collection()
  .query(function(qb) {
    if (userId) {
      qb.where('id', userId);
    } else if (searchTerm) {
      qb.where('name', 'like', '%' + searchTerm + '%');
    }
  })
  .fetch({withRelated: [
    'userNames.userMessages',
    {
      ...
    },
  ]});

query.then(function(user) {
fetch()
db.model('Users')
单独就像一个“类”,只有可用的

因此,动态查询的一个可能解决方案是:

var query = db.model('Users')
  .collection()
  .query(function(qb) {
    if (userId) {
      qb.where('id', userId);
    } else if (searchTerm) {
      qb.where('name', 'like', '%' + searchTerm + '%');
    }
  })
  .fetch({withRelated: [
    'userNames.userMessages',
    {
      ...
    },
  ]});

query.then(function(user) {