sequelize.js - 按 id 和 return 结果查找
sequelize.js - Find by id and return result
我有一个功能,
var findUserDevice = function(userDeviceId){
var device = db.DeviceUser.find({
where: {
id: userDeviceId
}
}).then(function(device) {
if (!device) {
return 'not find';
}
return device.dataValues;
});
};
但是这个函数没有return任何东西...
var UserDevice = findUserDevice(req.body.deviceUserId);
console.log(UserDevice);// undefined
如果您在控制台上得到的是 undefined 而不是 'not find',这意味着您的函数正在返回一个值。问题可能是 dataValues 实际上是未定义的。您需要检查 device
.
的内容
提示:尝试只返回 device
或 device.id
PS。如果你想根据 id 进行搜索,应该使用你的模型的 findById()
功能。
var device = db.DeviceUser.findById(userDeviceId).then(function(device) {
if (!device) {
return 'not find';
}
return device.dataValues;
});
您尝试执行的操作是async
,这意味着您需要使用回调。由于 sequelize
是建立在 Promises 之上的,因此您实际上应该这样编写代码:
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;
});
};
然后像这样使用它:
findUserDevice(req.body.deviceUserId).then( function(UserDevice) {
console.log(UserDevice);
});
2020 年了,async
和 await
越来越受欢迎。您可以将代码更改为:
const findUserDevice = async function (userDeviceId) {
const device = await db.DeviceUser.findOne({
where: {
id: userDeviceId
}
});
if (device === null) {
return 'device not found';
}
return device.dataValues;
};
(async () => {
// ...
const UserDevice = await findUserDevice(req.body.deviceUserId);
console.log(UserDevice);
// ...
})()
恕我直言,上面的代码更具可读性。
这个函数收到了参数id,这个工人对我来说:
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) });
}
我有一个功能,
var findUserDevice = function(userDeviceId){
var device = db.DeviceUser.find({
where: {
id: userDeviceId
}
}).then(function(device) {
if (!device) {
return 'not find';
}
return device.dataValues;
});
};
但是这个函数没有return任何东西...
var UserDevice = findUserDevice(req.body.deviceUserId);
console.log(UserDevice);// undefined
如果您在控制台上得到的是 undefined 而不是 'not find',这意味着您的函数正在返回一个值。问题可能是 dataValues 实际上是未定义的。您需要检查 device
.
提示:尝试只返回 device
或 device.id
PS。如果你想根据 id 进行搜索,应该使用你的模型的 findById()
功能。
var device = db.DeviceUser.findById(userDeviceId).then(function(device) {
if (!device) {
return 'not find';
}
return device.dataValues;
});
您尝试执行的操作是async
,这意味着您需要使用回调。由于 sequelize
是建立在 Promises 之上的,因此您实际上应该这样编写代码:
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;
});
};
然后像这样使用它:
findUserDevice(req.body.deviceUserId).then( function(UserDevice) {
console.log(UserDevice);
});
2020 年了,async
和 await
越来越受欢迎。您可以将代码更改为:
const findUserDevice = async function (userDeviceId) {
const device = await db.DeviceUser.findOne({
where: {
id: userDeviceId
}
});
if (device === null) {
return 'device not found';
}
return device.dataValues;
};
(async () => {
// ...
const UserDevice = await findUserDevice(req.body.deviceUserId);
console.log(UserDevice);
// ...
})()
恕我直言,上面的代码更具可读性。
这个函数收到了参数id,这个工人对我来说:
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) });
}