在服务器端检索客户端(html/控制器)数据(express/node.js)
Retrieve client side (html/ controller) data in server sider (express/ node.js)
我不熟悉使用 MEAN 堆栈构建应用程序,并且正在尝试构建一个网站来查询存储在 mongodb 集合中的程序数据。在我的 html 索引文件中,我实现了一个搜索栏:
<form class="navbar-form navbar-right" role="search">
<div class="input-group">
<input type="text" class="form-control" placeholder="Search" name="srch-term" id="srch-term" ng-model="keywords">
<div class="input-group-btn">
<button class="btn btn-default" type="submit"><i class="glyphicon glyphicon-search" ng-click="mongoQuery()"></i></button>
</div>
</div>
</form>
我的 controller.js 文件然后启动对服务器的调用以获取所有 mongodb 与搜索的关键字相匹配的集合:
myApp.controller('AppCtrl', ['$scope', '$http', function($scope, $http) {
$scope.mongoQuery = function(){
console.log($scope.keywords);
$http.get('/search_results', $scope.keywords);
}
}]);
然后我尝试检索在我的 server.js 文件的搜索栏中输入的关键字匹配的所有记录(通过它们的标签字段,或通过它们的类别字段):
var express = require('express');
var app = express();
var mongojs = require('mongojs');
var db = mongojs('mydb', ['bbctest']);
var bodyParser = require('body-parser');
app.use(express.static(__dirname + "/public"));
app.use(bodyParser.json());
// THIS FUNCTION DOES NOT WORK
app.get('/search_results', function(req, res){
//console.log(req.body);
console.log("I recieved a GET request for searching keywords")
var searchKeywords = req.body.keywords;
console.log(searchKeywords);
db.bbctest.find( { $or: [ { categories:searchKeywords} , {tags:searchKeywords } ] }, { complete_title: 1 } ).forEach(function(err, docs) {
console.log(docs);
res.json(docs);
});
});
app.listen(3000);
console.log("Server running on port 3000");
我正在尝试从控制器访问变量 $scope.keywords 但不知道如何访问。正如您在上面看到的,我尝试使用 req.body.keywords 但是当我使用搜索栏时返回一个空对象。
如有任何帮助,我将不胜感激!另外,如果有任何有用的资源,你们会推荐,这将帮助我构建这样一个很棒的应用程序(搜索引擎)!
非常感谢。
将查询参数与获取请求一起使用以发送参数和值
$scope.mongoQuery = function(){
console.log($scope.keywords);
$http.get('/search_results?keywords='+$scope.keywords);
//when using post request use like below
// $http.post('/search_result',{keywords:$scope.keywords});
}
添加app.use(bodyParser.urlencoded({ extended: false }));在 app.use(bodyParser.json());
之前
var express = require('express');
var app = express();
var mongojs = require('mongojs');
var db = mongojs('mydb', ['bbctest']);
var bodyParser = require('body-parser');
app.use(express.static(__dirname + "/public"));
//add below line
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
//when using post request -> change app.get to app.post
app.get('/search_results', function(req, res){
//console.log(req.body);
console.log("I recieved a GET request for searching keywords")
//var searchKeywords = req.body.keywords; //when using post request
//accessing query parmas
var searchKeywords = req.query.keywords;
console.log(searchKeywords);
db.bbctest.find( { $or: [ { categories:searchKeywords} , {tags:searchKeywords } ] }, { complete_title: 1 } ).forEach(function(err, docs) {
console.log(docs);
res.json(docs);
});
});
app.listen(3000);
console.log("Server running on port 3000");
我不熟悉使用 MEAN 堆栈构建应用程序,并且正在尝试构建一个网站来查询存储在 mongodb 集合中的程序数据。在我的 html 索引文件中,我实现了一个搜索栏:
<form class="navbar-form navbar-right" role="search">
<div class="input-group">
<input type="text" class="form-control" placeholder="Search" name="srch-term" id="srch-term" ng-model="keywords">
<div class="input-group-btn">
<button class="btn btn-default" type="submit"><i class="glyphicon glyphicon-search" ng-click="mongoQuery()"></i></button>
</div>
</div>
</form>
我的 controller.js 文件然后启动对服务器的调用以获取所有 mongodb 与搜索的关键字相匹配的集合:
myApp.controller('AppCtrl', ['$scope', '$http', function($scope, $http) {
$scope.mongoQuery = function(){
console.log($scope.keywords);
$http.get('/search_results', $scope.keywords);
}
}]);
然后我尝试检索在我的 server.js 文件的搜索栏中输入的关键字匹配的所有记录(通过它们的标签字段,或通过它们的类别字段):
var express = require('express');
var app = express();
var mongojs = require('mongojs');
var db = mongojs('mydb', ['bbctest']);
var bodyParser = require('body-parser');
app.use(express.static(__dirname + "/public"));
app.use(bodyParser.json());
// THIS FUNCTION DOES NOT WORK
app.get('/search_results', function(req, res){
//console.log(req.body);
console.log("I recieved a GET request for searching keywords")
var searchKeywords = req.body.keywords;
console.log(searchKeywords);
db.bbctest.find( { $or: [ { categories:searchKeywords} , {tags:searchKeywords } ] }, { complete_title: 1 } ).forEach(function(err, docs) {
console.log(docs);
res.json(docs);
});
});
app.listen(3000);
console.log("Server running on port 3000");
我正在尝试从控制器访问变量 $scope.keywords 但不知道如何访问。正如您在上面看到的,我尝试使用 req.body.keywords 但是当我使用搜索栏时返回一个空对象。
如有任何帮助,我将不胜感激!另外,如果有任何有用的资源,你们会推荐,这将帮助我构建这样一个很棒的应用程序(搜索引擎)!
非常感谢。
将查询参数与获取请求一起使用以发送参数和值
$scope.mongoQuery = function(){
console.log($scope.keywords);
$http.get('/search_results?keywords='+$scope.keywords);
//when using post request use like below
// $http.post('/search_result',{keywords:$scope.keywords});
}
添加app.use(bodyParser.urlencoded({ extended: false }));在 app.use(bodyParser.json());
之前var express = require('express');
var app = express();
var mongojs = require('mongojs');
var db = mongojs('mydb', ['bbctest']);
var bodyParser = require('body-parser');
app.use(express.static(__dirname + "/public"));
//add below line
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
//when using post request -> change app.get to app.post
app.get('/search_results', function(req, res){
//console.log(req.body);
console.log("I recieved a GET request for searching keywords")
//var searchKeywords = req.body.keywords; //when using post request
//accessing query parmas
var searchKeywords = req.query.keywords;
console.log(searchKeywords);
db.bbctest.find( { $or: [ { categories:searchKeywords} , {tags:searchKeywords } ] }, { complete_title: 1 } ).forEach(function(err, docs) {
console.log(docs);
res.json(docs);
});
});
app.listen(3000);
console.log("Server running on port 3000");