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。 因为sequelizebuild立在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的内容。

提示:尝试返回只是devicedevice.id

PS。 如果你想做基于id的search,应该去findById()函数的模型。

 var device = db.DeviceUser.findById(userDeviceId).then(function(device) { if (!device) { return 'not find'; } return device.dataValues; });