【问题标题】:Different Get methods in Node-Express Rest APINode-Express Rest API 中的不同 Get 方法
【发布时间】: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


【解决方案1】:

你想要的都是不可能的。您需要以某种方式区分您的 2 个意图,或者通过为端点提供不同的名称(就像您在评论中已经建议的那样),或者通过提供例如查询参数,以便您可以进行如下调用:

$http.get('/myApp?limit=2').success(function(response) { .. });

省略limit时,可以返回所有结果。

类似:

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
   }
});

【讨论】:

    猜你喜欢
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 2014-07-19
    • 2018-12-24
    • 1970-01-01
    • 2017-12-02
    相关资源
    最近更新 更多