Я недавно начал использовать стек MEAN и наткнулся на некоторые ошибки, пытаясь работать с моей базой данных MongoDB. Я успешно подключился к базе данных, внедрил свои маршруты CRUD и получаю неправильные значения для чего-либо, кроме метода find () (который возвращает все документы в моей коллекции без проблем). Например, findOne () выглядит следующим образом:
router.route(server.get("/company/:id", (request, response) => {
const companyId = request.params.id;
console.log("Showing company with id: " + companyId)
dbCollection.findOne({ _id: mongodb.ObjectId(companyId) }, (error, result) => {
if (error) throw error;
// return company
response.json(result);
});
}));
Результат после выполнения запроса на получение через почтальон: null
The insertOne () выглядит следующим образом:
router.route(server.post("/company/add", (request, response) => {
const company = request.body;
dbCollection.insertOne(company, (error, result) => {
if (error) throw error;
// return updated list
dbCollection.find().toArray((_error, _result) => {
if (_error) throw _error;
response.json(_result);
});
});
}));
Он добавляет один документ в базу данных с идентификатором, который он создает для себя, но по какой-то причине он не принимает данные тела. (2 строковых элемента {"name": "xy", "type": "company"})
И, наконец, deleteOne () :
router.route(server.delete("/company/delete/:id", (req, res) => {
const companyId = req.param.id;
console.log("Delete company with id: ", companyId);
dbCollection.deleteOne({ _id: mongodb.ObjectId(companyId) }, function(err, result) {
if (err) throw err;
// send back entire updated list after successful request (optional)
dbCollection.find().toArray(function(_err, _result) {
if (_err) throw _err;
res.json(_result);
});
});
}));
По какой-то причине он удаляет самый первый документ в коллекции, но не тот, который введен с соответствующим идентификатором.
Если бы кто-нибудь мог помочь мне с этим, это было бы здорово. Заранее спасибо!
Редактировать 1: Добавление нового документа в коллекцию через Почтальона
Коллекция после добавления
Редактировать 2: Получить запрос с помощью идентификатора и ответа (возвращает ноль)
Вывод на консоль: Отображение компании с идентификатором: 5e63db861dd0ce2418ce423d
Редактировать 3:
Исправлен код для методов findOne()
и deleteOne()
.
При попытке с _id вам необходимо преобразовать строку (request.params.id) в ObjectId ().
Преобразовать строку в ObjectID в MongoDB - whoami