【问题标题】:How to automatically create a REST API node.js / MongoDB如何自动创建 REST API node.js / MongoDB
【发布时间】:2016-09-19 11:54:07
【问题描述】:

我正在运行一个处理 REST Api 调用的 node.js 服务器。 这些调用的响应将是一个或一组 MongoDB 对象 (JSON)。

我已经阅读了有关参数以及如何处理它们的信息。但是有没有办法自动做到这一点?

假设我有一个用户集合:

name: String,
hobby: String,
age: Number

现在我想获取所有年龄为 18 岁的用户的列表。

我知道我可以像这样恢复参数:

url: http://localhost:3000/user?age=18&hobby=something

var app = express();
app.get('/user', function (req,res) {

    var age=req.query.age;
    var hobby=req.query.hobby;

    mondodbUser.find(...);
}

但假设用户有 10 个不同的属性,而我有 15 个不同的集合。我不能动态地做到这一点吗?所以我不必恢复所有可能的参数?

我希望能够以使用所有给定参数的方式搜索 MongoDB。

我希望我能表达得足够好 :D 谢谢!

【问题讨论】:

  • 假设用户有 10 个不同的属性,而我有 15 个不同的集合,你能澄清一下吗?
  • 我不想手动从 URI 中恢复每个参数并在 mongoDB 的 find() 方法中使用它,而只是使用 URI 中给出的任何参数调用 find() 方法.
  • 也许我想多了,我可以尝试检索每个参数并将其提供给 find 方法,即使它为 NULL/未定义?
  • 那么你为什么不能只做User.find(req.query, cb),因为req.query 对象将只具有查询字符串中定义的属性,仅此而已。
  • 我可以!谢谢!那是我不知道的:D 也许我应该阅读更多关于 mongoDB find 和 req.query 的信息,而不是尝试为其余的 api 寻找示例!您可以添加一个答案,如果需要,我会将其标记为正确。不确定这个 StackOverflow 的东西。

标签: javascript node.js mongodb rest


【解决方案1】:

因为req.query在解析查询字符串后返回一个JS对象,该对象将具有在查询字符串中定义的属性,例如:

/user?name=andrew&age=22

req.query 将返回对象{ name: "andrew", age: "22" }

因此它可以用作find() 方法参数,只要对象中的属性与基础集合文档架构匹配。

你可以这样做:

app.get('/user', function (req, res) {
    User.find(req.query, function (err, users){ ... });
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 2018-10-07
    相关资源
    最近更新 更多