仅使用指定参数获取路线

时间:2019-08-30 21:06:27

标签: mongodb express

我是MongoDB和CRUD API的新手。 我已经创建了第一个数据库并插入了一些数据。我可以获取,发布和删除请求。

现在,我想通过添加参数来请求“获取”,所以我执行以下操作:

router.get('/:story_name', async function (req, res, next) {
  const selectedStory = await loadStoryToRead()
  res.send(await selectedStory.find({}).toArray())
})

说story_name是S1C1,

我可以做http://localhost:3000/api/whatever/s1c1来获取数据。

我原本只希望使用指定的参数来检索数据,但是我可以使用ID或日期或json文件中找到的任何其他参数来获取数据。

例如我可以做

http://localhost:3000/api/whatever/5d692b6b21d5fdac2... // the ID

http://localhost:3000/api/whatever/2019-08-30T13:58:03.035Z ... // the created_at date

并获得相同的结果。

那是为什么? 如何确保如果我使用router.get('/:story_name' ...仅在使用'story_name'参数时可以检索数据?

谢谢!

*更新*

我的loadStoryToRead()看起来像这样:

async function loadStoryToRead () {
  const client = await mongodb.MongoClient.connect(
    'mongodb+srv://...', {
      useNewUrlParser: true
    })
  return client.db('read').collection('selectedStory')
}

我将尝试重新提出我的问题。

我想确保仅通过在URL中添加“ story_name”参数而不是在文件内添加任何其他参数来检索数据。

我读过的书建议将参数添加到get请求中,但是当我这样做时,无论输入什么参数,我仍然可以检索数据。

但是,删除请求非常具体。如果我使用router.delete('/:id'...,则删除文件的唯一方法是使用ID参数。

我想通过get请求而不是使用'id',而是使用'story_name'来获取相同的内容。

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式功能来查询中的模式匹配字符串。

语法为:

await page.click('input#chart-name');
await page.type('input#chart-name', 'This is the chart name box'); // this appends the default

例如,您可以使用

const inputValue = await page.$eval('input#chart-name', el => el.value);
for (let i = 0; i < inputValue.length; i++) {
    await page.keyboard.press('Backspace');
}

您可以根据需要使用$ and和$ or。

要了解更多信息,请点击链接 https://docs.mongodb.com/manual/reference/operator/query/regex/