sequelize.js – 按ID查找并返回结果
我有一个function,
var findUserDevice = function(userDeviceId){ var device = db.DeviceUser.find({ where: { id: userDeviceId } }).then(function(device) { if (!device) { return 'not find'; } return device.dataValues; }); };
但是这个函数不会返回任何东西…
var UserDevice = findUserDevice(req.body.deviceUserId); console.log(UserDevice);// undefined
您正在尝试执行的操作是async
,这意味着您需要使用callback。 因为sequelize
build立在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); });
如果你在控制台上没有定义而没有find,这意味着你的函数正在返回一个值。 问题可能是dataValues实际上是未定义的。 你需要检查device
的内容。
提示:尝试返回只是device
或device.id
PS。 如果你想做基于id的search,应该去findById()
函数的模型。
var device = db.DeviceUser.findById(userDeviceId).then(function(device) { if (!device) { return 'not find'; } return device.dataValues; });