我是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'来获取相同的内容。
答案 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/