2015-02-24 4 views
0

Я новичок в bookshelf.js и использую его для ORM в моем проекте node.js + MySQL. Я получаю сообщение об ошибке с этим простым запросом. Может кто-нибудь сказать мне, где я ошибаюсь?Данные о сбоях в проблеме с использованием где в книжной полке/knex

//Get reviews for a service - TESTED 
app.get('/api/review/:serviceID?', function(req, res) { 
    var serviceID = req.params.serviceID; 
    console.log("Service ID: " + serviceID); 
    new Review.query('where','serviceID','=', serviceID) 
    .fetchAll() 
    .then(function(reviews) { 
     if (reviews!=null) 
      res.send(reviews.toJSON()); 
     else 
      res.send("No reviews found"); 
    }).catch(function(error) { 
     console.log(error); 
     res.send('An error occurred in fetching reviews for service '+ serviceID); 
    }); 
}); 

В этой таблице обзора есть первичный ключ как reviewID и serviceID как внешний ключ. Это сообщение об ошибке, которое я получаю.

TypeError: Object [object Object] has no method 'forge' 
    at new Model.(anonymous function).Collection.(anonymous function 
    (d:\PMF\node_modules\bookshelf\bookshelf.js:146:24) 
    at app.get.serviceID (d:\PMF\app.js:121:15) 
    at Layer.handle [as handle_request] 
    (d:\PMF\node_modules\express\lib\router\layer.js:82:5) 
    at next (d:\PMF\node_modules\express\lib\router\route.js:110:13) 
    at Route.dispatch (d:\PMF\node_modules\express\lib\router\route.js:91:3) 
    at Layer.handle [as handle_request 
    (d:\PMF\node_modules\express\lib\router\layer.js:82:5) 
    at d:\PMF\node_modules\express\lib\router\index.js:267:22 
    at param (d:\PMF\node_modules\express\lib\router\index.js:340:14) 
    at param (d:\PMF\node_modules\express\lib\router\index.js:356:14) 
    at Function.proto.process_params 
    (d:\PMF\node_modules\express\lib\router\index.js:400:3) 
    at next (d:\PMF\node_modules\express\lib\router\index.js:261:10) 
    at jsonParser (d:\PMF\node_modules\body-parser\lib\types\json.js:96:40) 
    at Layer.handle [as handle_request (d:\PMF\node_modules\express\lib\router\layer.js:82:5) 
    at trim_prefix (d:\PMF\node_modules\express\lib\router\index.js:302:13) 
    at d:\PMF\node_modules\express\lib\router\index.js:270:7 
    at Function.proto.process_params (d:\PMF\node_modules\express\lib\router\index.js:321:12) 
    at next (d:\PMF\node_modules\express\lib\router\index.js:261:10) 
    at jsonParser (d:\PMF\node_modules\body-parser\lib\types\json.js:96:40) 
    at Layer.handle [as handle_request] (d:\PMF\node_modules\express\lib\router\layer.js:82:5) 
    at trim_prefix (d:\PMF\node_modules\express\lib\router\index.js:302:13) 
    at d:\PMF\node_modules\express\lib\router\index.js:270:7 
    at Function.proto.process_params (d:\PMF\node_modules\express\lib\router\index.js:321:12) 
    at next (d:\PMF\node_modules\express\lib\router\index.js:261:10) 
    at urlencodedParser (d:\PMF\node_modules\body-parser\lib\types\urlencoded.js:84:40) 
    at Layer.handle [as handle_request] (d:\PMF\node_modules\express\lib\router\layer.js:82:5) 
    at trim_prefix (d:\PMF\node_modules\express\lib\router\index.js:302:13) 
    at d:\PMF\node_modules\express\lib\router\index.js:270:7 
    at Function.proto.process_params (d:\PMF\node_modules\express\lib\router\index.js:321:12) 
+0

Я попытался альтернативно нового отзыва ({ 'ServiceID': ServiceID}) .fetchAll() но это дает мне все отзывы игнорируя ServiceID = $ ServiceID состояния Я попытался нового отзыва ({ 'ServiceID': ServiceID}) .fetch() , но это дает мне первый обзор, где ServiceID = $ ServiceID – Vineet

ответ

1

Ваш Review вызов конструктора отсутствует скобки: код должен быть new Review().query... вместо new Review.query....

Как примечание стороны, этот простым способ написания запроса должен работать:

return new Review().where('serviceID', serviceID).fetchAll() 

 Смежные вопросы

  • Нет связанных вопросов^_^