Как передать objectID документа внутри коллекции MongoDB в URL? - PullRequest
1 голос
/ 17 февраля 2020

Я учусь пользоваться базами данных. Я работаю над созданием простого приложения CRUD, которое хранит контактную информацию, отображает указанную контактную информацию и позволяет пользователю удалять контакты. Я пытаюсь передать objectID в качестве параметра внутри URL. Вот как я пытаюсь это сделать:

<a href="/contacts/list/<%= this._id %>">Delete</a>

Затем я пытаюсь отправить этот objectID на отдельную страницу.

router.get('/contacts/list/:id', function(req, res){
    res.send(req.params.id);
});

Если кто-то может направить меня в правильном направлении это было бы очень ценно.

1 Ответ

0 голосов
/ 17 февраля 2020

К тому времени, когда вы получите его в коде, это будет строка, ObjectId() не является поддерживаемым типом JSON, он из BSON , который задан MongoDB c. Поэтому, когда вы запрашиваете базу данных, внутренние драйверы конвертируют ObjectId () в строку и представляют ее вам. Вы можете передавать его в любом месте, как строка, и когда вы запрашиваете / удаляете документ, используя который вам нужно конвертировать string из ObjectId(), чтобы он соответствовал типу поля _id в базе данных.

mongodb Driver:

const ObjectId = require('mongodb').ObjectId;
const id = new ObjectId(objectIdSring);

mon goose:

const mongoose = require('mongoose');
const id = mongoose.Types.ObjectId(objectIdSring);

Примечание: Вам не нужно сделать это преобразование самостоятельно при использовании функции .findByIdAndDelete () , предоставляемой mon goose - которая фактически принимает строку и внутренне преобразуется в ObjectId () . Мало того, что он имеет несколько других функций, похожих на это, вы можете проверить функции с синтаксисом: .findById*****.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...