【发布时间】:2016-03-14 20:13:28
【问题描述】:
我一直在使用平均堆栈创建一个网站,但在某个时候卡住了。我有一个 mongo db 数据库,我目前正在使用用 Express 构建的 Rest Api 从数据库中获取每个文件(以在主页上显示它们)。
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) { .. });
【问题讨论】:
-
尝试颠倒他们的订单
-
正如@malix 指出的,尝试修改订单。像
'/myapp/foo'这样的请求将触发您的第一个/myapp路由处理程序,而不是第二个。 -
@AshleyB 修改订单是什么意思?如果您不介意或解释更多细节,您能否提供一段代码。您是否想说在方法中使用不同的名称,例如; '/myApp/GetAll' 和 '/myApp/Limit2' ?
标签: javascript angularjs node.js express mean-stack