Я создаю приложение менеджера магазина. Здесь пользователь должен иметь возможность запрашивать продукты, используя запрос продуктов. Условием является то, что товары должны быть заказаны по расстоянию до магазина товаров.
Например: если пользователь ищет карандаш, он должен вернуть все товары с именем карандаша, принадлежащие магазинам. в пределах 15 км, и результаты должны быть упорядочены по расстоянию до магазина.
// Модель продукта
const productSchema = new mongoose.Schema({
name: {
type: String,
trim: true,
required: 'Product name is required'
},
store: {
type: mongoose.Schema.ObjectId,
ref: 'Store',
required: 'Store must be connected to the user'
}
});
// Модель магазина
const storeSchema = new mongoose.Schema({
name: {
type: String,
trim: true,
required: 'Please enter a store name'
},
location: {
type: {
type: String,
default: 'Point'
},
coordinates: [{
type: Number,
required: 'You must supply coordinates!'
}]
},
});
вот как я запрашиваю продукты
const products = await Product.find({
name : args.name
store:{
near: { type: "Point", coordinates: [ 79.8612, 6.9271] },
maxDistance: store.maxDistance,
spherical: true
}
});
К сожалению, это дает мне ошибку
CastError: Cast to ObjectId failed for value "{
near: { type: 'Point', coordinates: [ 79.8612, 6.9271 ] },
maxDistance: 15,
spherical: true
}
Я считаю, что я правильно создал индексы
storeSchema.index({
location: '2dsphere'
});