J'ai une fonction,
var findUserDevice = function(userDeviceId){
var device = db.DeviceUser.find({
where: {
id: userDeviceId
}
}).then(function(device) {
if (!device) {
return 'not find';
}
return device.dataValues;
});
};
mais cette fonction ne retourne rien ...
var UserDevice = findUserDevice(req.body.deviceUserId);
console.log(UserDevice);// undefined
L'opération que vous essayez d'effectuer est async
, ce qui signifie que vous devez utiliser un rappel. Puisque sequelize
est construit au-dessus de Promises, vous devriez écrire votre code comme suit:
var findUserDevice = function(userDeviceId){
// return the promise itself
return db.DeviceUser.find({
where: {
id: userDeviceId
}
}).then(function(device) {
if (!device) {
return 'not find';
}
return device.dataValues;
});
};
Et plus tard, utilisez-le comme:
findUserDevice(req.body.deviceUserId).then( function(UserDevice) {
console.log(UserDevice);
});
Si vous obtenez non défini au lieu de «introuvable» sur la console, cela signifie que votre fonction renvoie une valeur. Le problème pourrait être que dataValues est en réalité non définie. Vous devez vérifier le contenu de device
.
Astuce: essayez de renvoyer uniquement device
ou device.id
PS Si vous voulez faire la recherche basée sur l'id, vous devriez aller pour la fonction findById()
de votre modèle.
var device = db.DeviceUser.findById(userDeviceId).then(function(device) {
if (!device) {
return 'not find';
}
return device.dataValues;
});
C'est 2019, async
& await
deviennent de plus en plus populaires Vous pouvez changer votre code pour
const findUserDevice = async function (userDeviceId) {
const device = await db.DeviceUser.find({
where: {
id: userDeviceId
}
})
if (!device) {
return 'not find'
}
return device.dataValues
}
;(async () => {
// ...
const UserDevice = await findUserDevice(req.body.deviceUserId)
console.log(UserDevice)
// ...
})()
IMHO, le code ci-dessus est beaucoup plus lisible.
Cette fonction a reçu params id, ce travailleur pour moi:
const { customer } = require('../models');
const get = async function(req, res){
let id = req.params.id;
[err, singleCustomer] = await to(customer.findByPk(id, { raw : true }));
return ReS(res, { message :'Obtener cliente: : ', data : JSON.stringify(singleCustomer) });
}