Angular $ ресурс не передает параметр в сервис Express

0

У меня есть приложение с угловым выражением, которое должно иметь возможность получать данные конструкции из коллекции MongoDB. Я использую службу $ resource в flConstruct для запроса данных с сервера. "Запрос" возвращает все данные и, кажется, работает нормально. Когда я пытаюсь получить данные только для одной из конструкций, используя "get no data", возвращается.

Я напечатал на консоли, чтобы посмотреть, что происходит с сервисом, и я не вижу параметр, доступный функции findOne. Ниже приведен вывод на консоль

Get - constructs.getConstructById
constructData.id undefined
req.params._id undefined
req.query._id undefined
No Error - Construct Data Retrieved
Get - constructs.getConstructs (Id) - No Error
Returned - construct null
Get - constructs.getConstructs (Id) - Sending Back question
Get - constructs.getConstructs (Id) - Sending Back neither error nor question

//Угловое обслуживание с именем flConstruct

angular.module('app').factory('flConstruct',function($resource){
var ConstructResource = $resource('/api/constructs/:id', {id: "@id"}, {
    get: { method: 'GET', url: '/api/constructs/byId/:id', params: {id: "@id"}},
    query: { method: 'GET' , url: '/api/constructs', isArray: true },
    create: { method: 'POST'},
    update: { method: 'PUT' },
    delete: { method: 'DELETE', params: {id: '@id'}}
});

return ConstructResource;
});

//Express config file named, routes.js

var constructs = require('../controllers/constructs'),

module.exports = function(app){


app.get('/api/constructs', constructs.getConstructs);
app.get('/api/constructs/byId', constructs.getConstructById);

app.post('/api/constructs', constructs.createConstruct);
app.put('/api/constructs', constructs.updateConstruct);
app.delete('/api/constructs/:id', constructs.deleteConstruct);
});
}

//Экспресс-контроллер с именем, construct.js

var Construct = require('mongoose').model('Construct');

exports.getConstructs = function(req,res){
var constructData = req.body;
console.log("Get - constructs.getConstructs");
console.log("constructData.id " + constructData.id);
console.log("constructData " + constructData);
console.log("req.params.id " + req.params.id);
console.log("req.query.id " + req.query.id);
Construct.find({}).exec(function(err,collection){
    if (err){
        console.log("Error - No Construct Retrieved");
    }else
    {
        console.log("No Error - Construct Data Retrieved");
    }
    //console.log(collection);
    res.send(collection);
})
};

exports.getConstructById = function(req,res) {
console.log("Get - constructs.getConstructById")
var constructData = req.body;
console.log("constructData.id " + constructData.constructId);;
console.log("req.params._id " + req.params._id)
console.log("req.query._id " + req.query._id)
Construct.findOne({_id:req.params.id}).exec(function(err,construct){
if (err){
    console.log("Error - No Construct Retrieved");
    console.log("Get - constructs.getConstructs (Id) - Error");
    res.send(null);
}else
{
    console.log("No Error - Construct Data Retrieved");
    console.log("Get - constructs.getConstructs (Id) - No Error");
    //console.log("Returned - construct._id " + construct._id)
    //console.log("Returned - construct.id " + construct.id)
    console.log("Returned - construct " + construct)
    console.log("Get - constructs.getConstructs (Id) - Sending Back question");
    res.send(construct);
}
console.log("Get - constructs.getConstructs (Id) - Sending Back neither error nor     question");
})

};
  • 0
    где вы вызываете функцию findOne и передаете ей параметр?
  • 0
    о, подождите, я думаю, что я вижу это здесь Construct.findOne({_id:req.params.id}).exec()
Показать ещё 3 комментария
Теги:
express
angular-resource

1 ответ

0

Я нашел свою ошибку. Все это находится в пределах Углового кода. Вызов метода get, созданный в flCachedConstruct.js, не правильно определяет передаваемый параметр. Мне нужно было включить имя параметра, "id", а также значение параметра, constructID. "Id" в этом вызове функции соответствует тому, что я назвал параметром в flConstruct.js.

flConstruct.get({id: constructId }, function(data) {

Ещё вопросы

Сообщество Overcoder
Наверх
Меню