2017-03-20 4 views
0
내가 관련 항목 모델 인스턴스를 가져 기존 쿼리를 수정해야

를 가져 오는 경우 동적 사용. 나는에서 아래의 원본을 수정하는 경우노드 knex 책장 -에 절은 동적으로 검색어가 제공되거나 ID가 제공되는 경우 따라 <code>where</code> 절을 변경,

: 여기에

return db.model('Users').where('id', userId) 
     .fetch({withRelated: [ 
     'userNames.userMessages', 
     { 
      ... 
     }, 
     ]}).then(function(user) { 

, 나는 오류 db.model (...)를 얻을 페치하지

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) { 

답변

2

fetch()가 필요로하는 기능을. new, forge() 또는 다른 쿼리의 결과에 의해 생성 된 model instance. db.model('Users') 혼자 단지 Model static methods 가능 가진 단지 "클래스"와 같다.

그래서 동적 쿼리에 대한 하나 개의 가능한 솔루션이 될 수 :

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) {