2015-06-22 2 views
0

Мое приложение настроено с помощью Ember в качестве интерфейсного фреймворка и end.js с помощью сервера express.js. В игре нет серверной структуры, поэтому, если бы я хотел запросить GET из/users, я вручную записываю инструкцию sql для извлечения нужных пользователей.Как настроить отношения HasMany для Ember.js на стороне node.js

Теперь, вопрос в том, что я установил hasMany/BelongsTo отношения между inspectResultType (родительский) и inspectResults (child).

App.InspectionResultType = DS.Model.extend({ 
    inspectionResultTypeID: DS.attr('number'), 
    name: DS.attr('string'), 
    ... 
    inspectionResults: DS.hasMany('inspectionResult', {async: true}), // figure out how to make this work. 
    // inspectionResults: DS.hasMany('inspectionResult'), 
}); 

App.InspectionResult = DS.Model.extend({ 
    inspectionResultID: DS.attr('string'), 
    ... 
    inspectionResultType: DS.belongsTo('inspectionResultType') 
}); 

Теперь инспекцииТелевизоры не имеют собственного маршрута в приложении Ember; они только доступны из записи. Таким образом, на маршруте записи я использую Ember RSVP для вызова функции inspectResultTypes в качестве свойства, которое работает, чтобы убедиться в правильности проверкиResultTypes, но не показывает никаких проверок.

В моих журналах сервера, я заметил это:

GET /inspectionResults?ids%5B%5D=2741&ids%5B%5D=2742&ids%5B%5D=2743&ids%5B%5D=2744 200 49597ms 

(пожалуйста, игнорировать значение 200 результата Это неправильно.).

Так что мой вопрос заключается в следующем: как я могу обрабатывать запрос GET, как это на стороне node.js? Кажется, что есть несколько идентификаторов, и я не думаю, что запуск нескольких операторов sql - это ответ.

ответ

0

Вы должны получить доступ к req.query.ids в своем методе контроллера в node.js. Вы получите массив - что-то вроде:

var ids = req.query.ids; // [2741, 2742, 2744] 

Затем вы должны опрашивать базу данных с помощью IN Clause. Таким образом, ваш запрос выглядит следующим образом:

var query = 'SELECT * FROM InspectionResults WHERE id IN (' + ids.join() + ');'; 

Тогда вы получите множество моделей из базы данных, и вы должны отправить его в ответ на Эмбер, которые должны быть вам знакомы:

res.json({ 
InspectionResults: [ 
{}, // 2741 
{}, // 2742 
{} // 2744 
] 
}); 
+1

Сладкие что был до точки И по пункту. Благодаря! – Darshan

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