我一直在用Mean堆栈创建一个网站,而且我在某个时候陷入困境。我有一个mongo数据库数据库,我目前从数据库中获取每个文件(在主页面上显示),我的Rest Api是用Express构建的。
Server.js
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');
有2个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文件。如何在我的Mean Stack应用程序中使用这样的不同get方法?
这是我从主控制器调用get方法的代码。如何确保调用特定的get方法?感谢..
$http.get('/myApp').success(function(response) { .. });
答案 0 :(得分:1)
你想要的是不可能的。不知何故,您需要区分您的2个意图,或者通过给端点提供不同的名称(就像您在评论中已经建议的那样),或者提供例如查询参数,这样您就可以进行如下调用:
$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
}
});