Saltar al contenido

Seleccionar un registro aleatorio de Sequelize findAll

Solución:

Puedes probar esto:

Encounter.findAll({ order: Sequelize.literal('rand()'), limit: 5 }).then((encounters) => {
        // single random encounter
    }); 

No olvide solicitar el Sequelize

Creo que esta solución es la más clara. Debes usar una función aleatoria de una instancia de secuenciación

const sequelize = new Sequelize(url, opts);

Se recomienda utilizar un sequelize-cli para generar el esquema inicial, exporta automáticamente la variable de secuenciación.

Encounter.findOne({ 
  order: sequelize.random() 
});

También con este enfoque no necesitas resolver RAND() vs RANDOM() problema si cambia un dialecto db de postgres a MySQL o viceversa.

Encounter.findOne({ order: 'random()' }).then((encounter) => {
    // single random encounter
});

random() debe usarse en el caso de PostgreSQL, en el caso de MySQL probablemente usaría rand(). No especificó qué base de datos está utilizando.

Editar

O si realmente quieres usar .findAll():

Encounter.findAll({ order: 'random()', limit: 1 }).then((encounter) => {
    // single random encounter
}); 
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *