修改Get方法以使用Name获取数据

时间:2018-06-07 14:42:14

标签: node.js mongodb mongoose

我有这样的问题。我正在使用带有mongoose的MongoDB创建Nodejs应用程序。我的数据库中有一个名为Employee的集合。该集合的对象具有一些属性,如id,name,position,office,Salary。

我创建了一个节点函数,让员工使用这样的id。

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 :(得分:0)

我认为你打电话的方式可能有问题 数据库中的集合:

 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可能不是最佳做法之一。