Я создаю приложение CRUD для стека MEVN (Vue, Node, Express, MongoDB). Я пытаюсь настроить следующий Express маршрут для моего приложения ...
postRoutes.get('/view/:id', async (req, res) => {
const collection = await loadPostsCollection();
let id = req.params.id;
res.send(await collection.find({}).toArray());
res.status(201).send();
});
... так, чтобы он возвращал определенные c данные из MongoDB на основе идентификатора этих данных. Я не уверен, как настроить res.send
, чтобы он находил данные на основе req.params.id
. Я попытался передать req.params.id
так ...
postRoutes.get('/edit/:id', async (req, res) => {
const collection = await loadPostsCollection();
let id = req.params.id;
res.send(await collection.find({ _id: mongodb.ObjectId(req.params.id)}).toArray());
res.status(201).send();
});
... но это тоже не сработало. Любая идея, как настроить этот маршрут, чтобы он находил данные на основе параметра ID? Спасибо!
Моя полная Express страница маршрутизатора находится ниже:
const express = require('express');
const postRoutes = express.Router();
const mongodb = require('mongodb')
postRoutes.get('/', async (req, res) => {
const collection = await loadPostsCollection();
res.send(await collection.find({}).toArray());
});
postRoutes.post('/add', async (req, res) => {
const collection = await loadPostsCollection();
let task = req.body;
await collection.insertOne(task);
res.status(201).send();
});
postRoutes.get('/view/:id', async (req, res) => {
const collection = await loadPostsCollection();
let id = req.params.id;
res.send(await collection.find({}).toArray());
res.status(201).send();
});
postRoutes.delete('/delete/:id', async (req, res, next) => {
const collection = await loadPostsCollection();
collection.deleteOne({ _id: mongodb.ObjectId(req.params.id) });
res.status(200).send({});
});
async function loadPostsCollection() {
const client = await mongodb.MongoClient.connect(
'...',
{
useNewUrlParser: true
}
);
return client.db("test").collection("todos")
}
module.exports = postRoutes;