Consular las reservas que un usuario tiene
Ejemplo:
**
{
"uid": "0lsgPROLvLSVKMF5DTaoRuNnMCd2",
"bookings": [
{
"bookingId": "2*12-06-2018*16-06-2018"
},
{
"bookingId": "5*24-08-2018*29-06-2018"
},
{
"bookingId": "3*17-09-2018*24-09-2018"
}
]
}
{
"agency": {
"name": "Arrendamientos Santa Fé",
"nit": "1123-1233-12313-51414"
},
"homes": [
{
"id": 1 ,
"name": "Torre davivienda",
"description": "Apartamento muy comodito",
"location": {
"address": "Avenida siempre viva 123",
"latitude": "4.1231231",
"longitude": "-421213212"
},
"city": "Medellín",
"type": "Apartamento",
"rating": "4.9",
"totalAmount": "932.234",
"pricePerNight": "100.233",
"thumbnail": "https://goo.gl/sccYgg",
"booking":[
{
"checkIn": "07-04-2018",
"checkOut": "10-04-2018",
"bookingId": "1*07-04-2018*10-04-2018"
},
{
"checkIn": "03-06-2018",
"checkOut": "10-08-2018",
"bookingId": "1*03-06-2018*10-08-2018"
}
]
},
{
"id": 2 ,
"name": "La quinta porra",
"description": "Apartamento muy lejos",
"location": {
"address": "Cra 1 # 1 A 1",
"latitude": "5.12",
"longitude": "21213212"
},
"city": "Medellín",
"type": "Casa",
"rating": "2",
"totalAmount": "50.000",
"pricePerNight": "20.000",
"thumbnail": "https://goo.gl/sccYgg",
"booking":[
{
"checkIn": "06-07-2018",
"checkOut": "10-04-2018",
"bookingId": "2*06-07-2018*10-04-2018"
}
]
}
]
}
RECOMENDACIÓN
Para la lógica del método mybookings que se encuentra dentro de
controllers/userController.js se recomienda el siguiente algoritmo:
- Acceda a la colección users usando el modelo userModel.js
- Busque el usuario identificado con el uid usando el metodo find de mongo, ejemplo
var query = {
uid:uid
}
userModel.find(query,(err, user)=>{
});
Dentro de user vienen un JSON como el siguiente ejemplo:
{
"uid": "9Mkgz46wmQX0nNSKqucrtkNaYJp1",
"bookings": [
{
"bookingId": "1*12-06-2018*16-06-2018"
},
{
"bookingId": "1*15-08-2018*25-08-2018"
},
{
"bookingId": "4*17-09-2018*24-09-2018"
}
]
}
Como se logra apreciar en cada bookingId es una PK (llave primaria) con el siguiente formato "idHome checkIncheckOut", por lo tanto para poder retornar la información de las homes debemos capturar todos los idHome de las homes que tiene en reserva, en la estructura de datos mas cómoda (vector, arrayList, string, etc) para el programador.
ejemplo: var idHomes = ["1","4"]
- Luego de saber los idHomes de las casa reservadas por el usuario, se procede a construir el QUERY de consulta para mongo la cual traiga las homes con los id previamente identificados, haciendo uso del operador lógico OR como el siguiente ejemplo:
var queryidHomes={
$or :[
{"id":idHomes[0] },
{"id":idHomes[1] }
]
}
- Luego introducimos la QUERY creada dentro del método find de mongo haciendo uso del modelo Homes como se muestra en el siguiente ejemplo:
homeModel.find(queryidHomes,(err, homes)=>{
});
Dentro del objeto homes viene un array de JSON's con la información de las casa reservadas por el usuario, sin embarga en la propiedad bookings trae también las reservas hechas por otros usuarios, por lo tanto este JSON se debe modificar en este atributo, para que solo tenga las reservas hechas por el usuario que esta consultando. a continuación se muestra el JSON que viene en homes y el JSON que debería ser retornado por la función myBookings
JSON QUE VIENE EN HOMES:
[
{
"id": 1,
"type": "Apartamento",
"name": "Torre davivienda",
"description": "Apartamento muy comodito",
"location": {
"address": "Cl. 32c #66a-2",
"latitude": "6.2371963",
"longitude": "-75.5863614"
},
"city": "Medellín",
"rating": "4.9",
"totalAmount": 0,
"pricePerNight": "100.233",
"thumbnail": "https://www.constructoracapital.com/uploads/proyectos/1492813439_DSC_0093_EDI.jpg",
"bookings": [
{
"checkIn": "12-06-2018",
"checkOut": "16-06-2018",
"bookingId": "1*12-06-2018*16-06-2018"
},
{
"checkIn": "12-07-2018",
"checkOut": "16-07-2018",
"bookingId": "1*12-07-2018*16-07-2018"
},
{
"checkIn": "15-08-2018",
"checkOut": "25-08-2018",
"bookingId": "1*15-08-2018*25-08-2018"
},
{
"checkIn": "24-08-2018",
"checkOut": "30-08-2018",
"bookingId": "1*24-08-2018*30-08-2018"
}
]
},
{
"id": 4,
"type": "Apartamento",
"name": "Torre jacinto",
"description": "Apartamento muy loquillo",
"location": {
"address": "Cl. 30c #52-2 a 52-88",
"latitude": "10.4015888",
"longitude": "-75.5010922"
},
"city": "Cartagena",
"rating": "4.9",
"totalAmount": 0,
"pricePerNight": "220.233",
"thumbnail": "https://d15jm47acbjce0.cloudfront.net/s838x629_-428663469.jpg",
"bookings": [
{
"checkIn": "12-06-2018",
"checkOut": "16-06-2018",
"bookingId": "4*12-06-2018*16-06-2018"
},
{
"checkIn": "17-09-2018",
"checkOut": "24-09-2018",
"bookingId": "4*17-09-2018*24-09-2018"
}
]
}
]
JSON QUE SE ESPERA SEA RETORNADO
[
{
"id": 1,
"type": "Apartamento",
"name": "Torre davivienda",
"description": "Apartamento muy comodito",
"location": {
"address": "Cl. 32c #66a-2",
"latitude": "6.2371963",
"longitude": "-75.5863614"
},
"city": "Medellín",
"rating": "4.9",
"totalAmount": 0,
"pricePerNight": "100.233",
"thumbnail": "https://www.constructoracapital.com/uploads/proyectos/1492813439_DSC_0093_EDI.jpg",
"bookings": [
{
"checkIn": "12-06-2018",
"checkOut": "16-06-2018",
"bookingId": "1*12-06-2018*16-06-2018"
},
{
"checkIn": "15-08-2018",
"checkOut": "25-08-2018",
"bookingId": "1*15-08-2018*25-08-2018"
}
]
},
{
"id": 4,
"type": "Apartamento",
"name": "Torre jacinto",
"description": "Apartamento muy loquillo",
"location": {
"address": "Cl. 30c #52-2 a 52-88",
"latitude": "10.4015888",
"longitude": "-75.5010922"
},
"city": "Cartagena",
"rating": "4.9",
"totalAmount": 0,
"pricePerNight": "220.233",
"thumbnail": "https://d15jm47acbjce0.cloudfront.net/s838x629_-428663469.jpg",
"bookings": [
{
"checkIn": "17-09-2018",
"checkOut": "24-09-2018",
"bookingId": "4*17-09-2018*24-09-2018"
}
]
}
]