Модифицируйте метод Get для получения данных, используя Name - PullRequest
0 голосов
/ 07 июня 2018

У меня такая проблема.Я создаю приложение Nodejs, используя MongoDB с mongoose.В моей базе данных есть коллекция сотрудников.Объекты этой коллекции имеют некоторые атрибуты, такие как идентификатор, имя, должность, офис, зарплата.

Я создал функцию узла для получения сотрудников с использованием идентификатора, подобного этому.

router.get('/:id',function (req, res) {
    if(!ObjectId.isValid(req.params.id)){
        return res.status(400).send('No record with given id :$(req.params.id)');
    }

    Employee.findById(req.params.id, function (err, doc) {
        if(!err){
            res.send(doc);
        }

        else{
            console.log('Error in Retriving Employee:'+JSON.stringify(err, undefined, 2));
        }

    });
});

Я хочуизмените эту функцию, чтобы найти сотрудника по имени.Я искал и перепробовал множество примеров, и я не смог найти подходящий метод для этого.

Один из способов, который я попробовал, - вот так.

router.get('employee/:name'),function (req, res) {
    Employee.find(req.params.name, function (err, doc) {
        if(!err){
            res.send(doc);
        }

        else{
            console.log('Error in Retriving Employee:'+JSON.stringify(err, undefined, 2));
        }
    });

}

Но он не дает результата, он просто дает мне такую ​​ошибку.

Cannot GET /employees/employee/Tharindu

В окне консоли он показывает мне вот так.

Refused to load the font '<URL>' because it violates the following Content Security Policy directive: "default-src 'self'". Note that 'font-src' was not explicitly set, so 'default-src' is used as a fallback.

При этом,

Failed to load resource: the server responded with a status of 404 (Not Found)

Может ли кто-нибудь помочь мне решить эту проблему?Спасибо.

1 Ответ

0 голосов
/ 07 июня 2018

Я думаю, что может быть что-то не так с тем, как вы связываете вызов коллекции в базе данных:

 Employee.find(req.params.name, function (err, doc) {
        if(!err){
            res.send(doc);
        }

Я действительно думаю, что вы должны сделать это с чем-то похожим на это:

   app.get('employee/:name', function (req, res){
     db.open(function(err,db){ 
         db.collection('employee', function(err, collection) {
             collection.find().toArray(function(err, items) {
                 console.log(items);
                 res.send(items);
             });
         });
     });
});

Это вернет результат массива collection.find().toArray с информацией внутри коллекции.

Кроме того, использование пути employee/:name может быть не одним из лучших методов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...