Как получить по ID даный элемент из базы?
есть такая схема для колекции ресторанов
const PointSchema = new mongoose.Schema({
name: { type: String, required: true },
})
const RestaurantSchema = new mongoose.Schema({
name: {
type: String,
require: true
},
description: {
type: String,
default: ""
},
image: {
type: String,
},
rating: {
type: String
},
sale: {
type: String,
},
time: {
type: String
},
minPrice: {
type: String,
},
priceRange: {
type: String
},
categories: [],
points: [PointSchema]
})
Исходя из этого получаем такую структуру в Mongo

Ответы (2 шт):
Автор решения: SiRanWeb
→ Ссылка
const Restaurant = mongoose.model('Restaurant', RestaurantSchema);
Restaurant.find({_id: '1234567890'}).then(console.log);
// или
Restaurant.findById('1234567890').then(console.log);
В mongoose.model передается 2 аргумента: название коллекции (с добавлением s в конце) и раннее созданную schema. Я не знаю название вашей коллекции, так что это привел как пример.
Настоятельно рекомендую вам прочитать документацию по mongoose, дабы в дальнейшем у вас возникало меньше подобных вопросов.
Автор решения: Senbonzakuraa
→ Ссылка
А разве не так это должно делаться?
const RestaurantSchema = new mongoose.Schema({
name: {
type: String,
require: true
},
description: {
type: String,
default: ""
},
image: {
type: String,
},
rating: {
type: String
},
sale: {
type: String,
},
time: {
type: String
},
minPrice: {
type: String,
},
priceRange: {
type: String
},
categories: [],
points: [{type: mongoose.Schema.Types.ObjectId, ref: 'Point'}]
})
Чтоб при запросе find делать вот так:
RestaurantModel.find({}).populate("points")
Тем самым получать не id элемента, а полную информацию