使用客户端发送的变量搜索 MongoDB
Search MongoDB using a variable sent from client
我在 Angular 的 Node 项目中使用 MongoJS,并尝试根据变量查找文档。
server.js
app.get('/api/find', function(req, res){
db.Fruits.find({code:'Apple'}).forEach(function(err, docs){
res.json(docs);
});
});
路线
.when('/find/:fruit', {
templateUrl: 'views/find.html',
controller: 'findCtrl',
resolve: {
result: function(searchService) {
return searchService.getResult();
}
}
})
service.js(客户端)
.factory('searchService', function($q, $http) {
return {
getResult: function() {
return $http.get('/api/find')
.then(function(response) {
if (typeof response.data === 'object') {
return response.data;
} else {
return $q.reject(response.data);
}
})
}
}
})
Controller.js
.controller('findCtrl', function($scope, result) {
$scope.result = result;
})
如您在 server.js 中所见,我正在传递一个静态字符串 'Apple'。我想用我在 Route 中列出的 $routeparams ':fruit' 替换它。
请帮忙
您需要将 url 参数 :fruit 传递给您的搜索服务:
.when('/find/:fruit', {
templateUrl: 'views/find.html',
controller: 'findCtrl',
resolve: {
result: function(searchService) {
return searchService.getResult($route.current.params.fruit);
}
}
})
搜索服务:
.factory('searchService', function($q, $http) {
return {
getResult: function(fruit) {
return $http.get('/api/find?fruit=' + fruit)
.then(function(response) {
if (typeof response.data === 'object') {
return response.data;
} else {
return $q.reject(response.data);
}
})
}
}
})
服务器:
我通常使用猫鼬,但您可能会使用 .toArray,因为使用 forEach 会遍历集合并多次尝试结束响应。
app.get('/api/find', function(req, res){
db.Fruits.find({code:req.query.fruit}).toArray(function (err, result) {
return res.json(result);
});
});
编辑:刚读到您正在使用 mongojs
你应该能够做到:
app.get('/api/find', function(req, res){
db.Fruits.find({code:req.query.fruit}, function (err, docs) {
return res.json(docs);
});
});
我在 Angular 的 Node 项目中使用 MongoJS,并尝试根据变量查找文档。
server.js
app.get('/api/find', function(req, res){
db.Fruits.find({code:'Apple'}).forEach(function(err, docs){
res.json(docs);
});
});
路线
.when('/find/:fruit', {
templateUrl: 'views/find.html',
controller: 'findCtrl',
resolve: {
result: function(searchService) {
return searchService.getResult();
}
}
})
service.js(客户端)
.factory('searchService', function($q, $http) {
return {
getResult: function() {
return $http.get('/api/find')
.then(function(response) {
if (typeof response.data === 'object') {
return response.data;
} else {
return $q.reject(response.data);
}
})
}
}
})
Controller.js
.controller('findCtrl', function($scope, result) {
$scope.result = result;
})
如您在 server.js 中所见,我正在传递一个静态字符串 'Apple'。我想用我在 Route 中列出的 $routeparams ':fruit' 替换它。
请帮忙
您需要将 url 参数 :fruit 传递给您的搜索服务:
.when('/find/:fruit', {
templateUrl: 'views/find.html',
controller: 'findCtrl',
resolve: {
result: function(searchService) {
return searchService.getResult($route.current.params.fruit);
}
}
})
搜索服务:
.factory('searchService', function($q, $http) {
return {
getResult: function(fruit) {
return $http.get('/api/find?fruit=' + fruit)
.then(function(response) {
if (typeof response.data === 'object') {
return response.data;
} else {
return $q.reject(response.data);
}
})
}
}
})
服务器: 我通常使用猫鼬,但您可能会使用 .toArray,因为使用 forEach 会遍历集合并多次尝试结束响应。
app.get('/api/find', function(req, res){
db.Fruits.find({code:req.query.fruit}).toArray(function (err, result) {
return res.json(result);
});
});
编辑:刚读到您正在使用 mongojs 你应该能够做到:
app.get('/api/find', function(req, res){
db.Fruits.find({code:req.query.fruit}, function (err, docs) {
return res.json(docs);
});
});