No pude actualizar el valor del objeto y descubrir cómo...
Lo que quiero hacer es si la frecuencia es una vez, devolver la consulta con 'creatorDetails.uuid' y MeasureId.
hasCompleted(userId) { // ... const query = { 'creatorDetails.uuid': userId, measureId: this._id, }; if (this.typeOptions.frequency === Frequency.ONE_TIME) { return query; console.log('query - inside', query); } // ... console.log('query - outside', query); return MeasureData.find(query).count() > 0; }Pero esto no funcionó bien.
console.log('query - inside, query) muestra
{ creatorDetails.uuid: "wD7BaeY6SsNSBgjbg" measureId: "RMLY8unSwSJtRDde2" } console.log('query - outside, query) muestra
{ creatorDetails.uuid: "wD7BaeY6SsNSBgjbg" measureId: "PPt4tnGNxW34F5o8t" }Así que probé a continuación.
hasCompleted(userId) { // ... const query = { 'creatorDetails.uuid': userId, measureId: this._id, }; if (this.typeOptions.frequency === Frequency.ONE_TIME) { // query.creatorDetails.uuid = userId; // this cause an error as well query.measureId = this._id; // added console.log('query - inside', query); } // ... console.log('query - outside', query); return MeasureData.find(query).count() > 0; } console.log('query - inside', query) muestra lo mismo
{ creatorDetails.uuid: "wD7BaeY6SsNSBgjbg" measureId: "RMLY8unSwSJtRDde2" } console.log('query - outside', query) muestra también lo mismo
{ creatorDetails.uuid: "wD7BaeY6SsNSBgjbg" measureId: "PPt4tnGNxW34F5o8t" } De alguna manera, el ID de medida se sobrescribe con un ID de medida extraño PPt4tnGNxW34F5o8t
También probé push dentro de hasCompleted()
if (this.typeOptions.frequency === Frequency.ONE_TIME) { query.measureId.push(this._id) } Pero recibí un error que dice query.measureId.push id not a function
¿Alguien sabe cómo actualizar la consulta? Gracias
Creo que hay un problema con el código:
Primero debe consolar y luego regresar; de lo contrario, no llamará a console.log debido a una declaración inalcanzable
hasCompleted(userId) { // ... const query = { 'creatorDetails.uuid': userId, measureId: this._id, }; console.log(this.typeOptions.frequency, Frequency.ONE_TIME, this.typeOptions.frequency === Frequency.ONE_TIME); if (this.typeOptions.frequency === Frequency.ONE_TIME) { console.log('query - inside', query); return query; // you have return after doing the console } // ... console.log('query - outside', query); return MeasureData.find(query).count() > 0; }¿Puedes probar esto y decirme si hay algún cambio en la salida o no?