#javascript #node.js #reactjs #mongodb #mongoose
Вопрос:
у меня есть MONGODB
база данных для таких мест, как ресторан или кафе, и в каждом месте есть Array Of Object
ТАБЛИЦЫ с именами, и у каждого объекта есть Number of table, and Array of booking Dates and details
пользователь, который может забронировать любую таблицу по дате и времени, поэтому я хочу проверить доступные таблицы и вернуть таблицу, которая не была забронирована в это время, которую пользователь хочет забронировать..
ВОТ МОЯ СХЕМА МАССИВА ТАБЛИЦ
tables: [
{
num: Number,
isBooked: {
type: Boolean,
default: false,
},
bookings: [
{
User: {
type: mongoose.Schema.Types.ObjectId,
ref: "Users",
},
Name: {
type: String,
},
Date: {
type: String,
},
Time: {
type: String,
},
Note: {
type: String,
},
numOfPersons: {
type: Number,
},
},
],
},
],
и если пользователь хочет забронировать столик в 20/8/2021 , 4:00 вечера, мы должны проверить свободный столик для этого пользователя в указанное время, мы должны проверить наличие столов и вернуть свободный столик, когда мы введем в него информацию о бронировании..
я попытался выполнить какой-то запрос, но всегда возвращал все место, а не только доступную таблицу..
const stringDate = new Date(date).toLocaleDateString();
const placeId = req.body.placeId;
const availableTable = await Places.findOne({
_id: placeId,
"tables[0].bookings": {
$not: {
$elemMatch: { $and: [{ Date: stringDate }, { Time: time }] },
},
},
});
availableTable.isBooked = true;
availableTable.bookings.push({
Name: name,
Time: time,
Date: stringDate,
numOfPersons: parseInt(personsNumber),
Note: note,
User: userId,
});
await availableTable.save()