Javascript Node Express Rest API中的不同Get方法
我一直在用Mean stack创建一个网站,我在某个点上卡住了。我有一个MongoDB数据库,目前我正在使用RESTAPI从数据库中获取每个文件(在主页上显示它们),RESTAPI是用Express构建的 Server.jsJavascript Node Express Rest API中的不同Get方法,javascript,angularjs,node.js,express,mean-stack,Javascript,Angularjs,Node.js,Express,Mean Stack,我一直在用Mean stack创建一个网站,我在某个点上卡住了。我有一个MongoDB数据库,目前我正在使用RESTAPI从数据库中获取每个文件(在主页上显示它们),RESTAPI是用Express构建的 Server.js var express = require('express'); var app = express(); var mongojs = require('mongojs'); var db = mongojs('mongodb://username...', ['myAp
var express = require('express');
var app = express();
var mongojs = require('mongojs');
var db = mongojs('mongodb://username...', ['myApp']);
var bodyParser = require('body-parser');
app.use(express.static(__dirname + '/public'));
app.use(bodyParser.json());
app.get('/myApp', function (req, res) {
db.myApp.find(function (err, docs) {
console.log(docs);
res.json(docs);
});
});
app.get('/myApp/:id', function (req, res) {
var id = req.params.id;
console.log(id);
db.myApp.findOne({_id: mongojs.ObjectId(id)}, function (err, doc) {
res.json(doc);
})
});
app.listen(3001);
console.log('Server running on port 3001');
有两种get方法,我可以理解,因为它们有不同的参数。因此,当我从控制器调用它们时,没有问题,因为如果我提供id,它将调用第二个get方法。但例如,我想在我的网站上使用类似的东西
app.get('/myApp', function (req, res) {
db.myApp.find({}).limit(2).skip(0, function(err, docs) {
console.log(docs);
res.json(docs);
});
});
这个get方法没有像server.js中的第一个get方法那样的参数,但是它们执行不同的任务。这限制了我对2文件的搜索。如何在我的平均堆栈应用程序中使用不同的get方法
这是我从主控制器调用get方法的代码。如何确保调用特定的get方法?谢谢
$http.get('/myApp').success(function(response) { .. });
你想要的是不可能的。不知何故,您需要区分您的两个意图,或者给端点指定不同的名称(如您在评论中已经建议的),或者提供一个查询参数,以便执行如下调用:
$http.get('/myApp?limit=2').success(function(response) { .. });
如果省略限制,则可以返回所有结果
比如:
app.get('/myApp', function (req, res) {
var limit = req.query.limit;
if (limit === undefined) {
// Return everything
} else {
// make sure limit is some valid number
// ... and do a mongo query limited to this number
}
});
正如@malix所指出的,试着改变他们的顺序,试着修改顺序。像
'/myapp/foo'
这样的请求将触发第一个/myapp
路由处理程序,而不是第二个。@AshleyB修改订单意味着什么?如果你不介意的话,你能提供一个代码片段或者解释更多细节吗。你是想说在像;'这样的方法中使用不同的名称吗/myApp/GetAll'和'/myApp/Limit2'?