Últimamente he estado trabajando en un sistema de autenticación que se supone que crea un nuevo usuario si no existe ningún usuario con una ID dada O carga en un usuario con una ID existente. También descubrí que puede devolver si un usuario existe o no con ID usando
User.count({_id: id}, function (err, count){ if(count > 0){ // User exists, continue with loading data } else { // User does not exist, create one } }); siendo el usuario un modelo Mongoose exportado mongoose.model('User', UserSchema);
Si creé una función que existe con Id (id) en mi app.js ahora, funcionaría perfectamente bien (a juzgar por el hecho de que el código mencionado anteriormente funciona perfectamente bien ), pero quiero mover esta función a mi modelo user.js ( que contiene el código Mongoose / MongoDB) en su lugar, de modo que lo tenga solo para ese modelo específico. Cada vez que trato de hacer eso usando
UserSchema.statics.existsWithId = function(id) { this.count({_id: id}, function (err, count){ return count > 0; }); }o métodos similares, sin embargo, simplemente devolverá undefined o un error una vez que lo ejecute dentro de mi app.js.
NOTA: Lo siento si esta es una pregunta simple o incluso tonta, pero soy bastante nuevo considerando la administración de bases de datos con Mongoose y aunque tengo ALGUNA experiencia con JS, no soy exactamente un profesional en eso.
Si alguno de ustedes necesita un código adicional proporcionado para responder a la pregunta, no dude en preguntarme y lo haré. Además, todavía no puedo +repetir respuestas, pero siempre las aprecio :)
Su método existsWithId devuelve un valor de forma asíncrona para que pueda devolverle la llamada y obtener el resultado de esta manera:
UserSchema.statics.existsWithId = function(id, cb) { this.count({ _id: id }, function(err, count) { cb(err, count > 0); }); } User.existsWithId("5882c3be5aad09028d4d8b46", function(err, res) { console.log(res); });