我有这样的问题。我正在使用带有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)
有人可以帮我解决这个问题吗?谢谢。
答案 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
可能不是最佳做法之一。