2015-12-14 11 views
8

मैं एक समारोह है,sequelize.js - आईडी और वापसी परिणाम द्वारा खोजें

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 

उत्तर

4

आपरेशन तुम क्या करने की कोशिश कर रहे async, जिसका अर्थ है कि आप एक कॉलबैक उपयोग करने की आवश्यकता है। sequelize के बाद से, वादे के शीर्ष पर निर्माण है कि आप वास्तव में इस तरह अपने कोड लिखना चाहिए:

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); 
}); 
2

आप के बजाय अपरिभाषित ही किया है तो ' कंसोल पर नहीं मिला, इसका मतलब है कि आपका फ़ंक्शन एक मान लौटा रहा है। समस्या डेटा हो सकता है वास्तव में असीमित है। आपको device की सामग्री की जांच करने की आवश्यकता है।

सुझाव: लौटने सिर्फ device या device.id

पी एस की कोशिश करो। यदि आप आईडी पर आधारित खोज करना चाहते हैं, तो अपने मॉडल के findById() फ़ंक्शन के लिए जाना चाहिए।

var device = db.DeviceUser.findById(userDeviceId).then(function(device) { 
    if (!device) { 
    return 'not find'; 
    } 
    return device.dataValues; 
}); 
संबंधित मुद्दे