У меня возникла проблема с получением данных из MongoDB. Получил ID cannot represent value: { _bsontype: "ObjectID", ... }
Кто-то сказал:
declare the _id of each model to the type of String
Итак, это работает, проблема исчезла, но можно ли так делать? Я имею в виду, что MongoDB не будет сохранять идентификаторы в виде идентификаторов объектов для развлечения ^^. Или то же самое - использовать String вместо ObjectID?
например: const userSchema = new mongoose.Schema ({_id: String, username: {type: String, required: true, unique: true}} - И спасибо за ответ! :)
Вам не нужно объявлять свой _id в схеме. Мангуст обрабатывает это автоматически. Я предполагаю, что проблема, с которой вы столкнулись, заключалась в другом, но вам нужно больше кода, чтобы сказать что-то полезное.
или вы можете передать ObjectId в String с помощью _id.toString()
в моем resolver.js для graphql я только что написал getPost: async (_, args, { Post }) =>{ const post = await Post.find({}); return posts}, чтобы получить все сообщения.
Попробуйте зарегистрировать post, прежде чем отправлять его обратно, потому что эта часть должна работать нормально.

Окей Я нашел решение как работать с ID. Идентификатор должен быть ObjectID, поскольку мангуст создает его. Итак, я работаю с GraphQL и не заметил, что GraphQL автоматически анализирует _id (ObjectID) на id (String).
Пример:
В typeDefs.gql не пишите _id: ID !, вместо этого пишите id: ID!
type Post {
id: ID!
title: String!
}
Затем мы получаем id в виде простой строки, и проблема исчезает.
Не совсем уверен, где вы это объявляете, но мангуст обычно обрабатывает преобразование из строки в ObjectId, так что да, я думаю, вы в порядке :)