मान लें कि मेरे पास वाहन और उपयोगकर्ता नाम के दो स्कीमा हैं और buyVehicle नाम का एक फ़ंक्शन है, जो एक वाहन आईडी लेता है अनुरोध निकाय और लॉग-इन उपयोगकर्ता दस्तावेज़ में वाहन आईडी का उपयोग करके वाहन स्कीमा को क्वेरी करके प्राप्त वाहन की जानकारी जोड़ता है।

उदाहरण के लिए - buyVehicle() के साथ VehicleId 00ford125 उस विशेष वाहन से संबंधित सभी जानकारी को लॉग-इन उपयोगकर्ता दस्तावेज़ में जोड़ देगा।

कोड:

function buyVehicle(req, res) {
    Vehicles.findOne({'vehicleId' : req.body.vehicleId}).exec()
    .then(function(vehicle) {
        if(vehicle) {
            return User.findOne({'_id': req.user._id}).exec();
        }
    })
    .then(function(user) {
        if(user) {
            // here I need to vehicle object which was queried above
            user.save();
        }
    })
    .catch(function(err) {
        console.log(err);
    });
}

दूसरे वादे में (जहां मैंने एक टिप्पणी दी है), मुझे ऊपर पूछे गए वाहन ऑब्जेक्ट की आवश्यकता है ताकि मैं जानकारी खींच सकूं और इसे उपयोगकर्ता ऑब्जेक्ट में जोड़ सकूं।

तो, सरल शब्दों में, मैं नेवला वादों के बीच डेटा कैसे पास करूं?

0
Taran Vohra 1 मई 2018, 10:21

1 उत्तर

सबसे बढ़िया उत्तर

वादों के साथ कई अलग-अलग तरीके हैं, लेकिन शायद सबसे आसान है कि मूल्य को केवल ऊपरी दायरे में सहेजना है, जैसे...

function buyVehicle(req, res) {
    let vehicle; // 1. Declare the variable in the function scope

    Vehicles.findOne({'vehicleId' : req.body.vehicleId}).exec()
    .then(function(foundVehicle) {
        if(foundVehicle) {
            vehicle = foundVehicle; // 2. Assign it here...

            return User.findOne({'_id': req.user._id}).exec();
        }
    })
    .then(function(user) {
        if(user) {
            // 3. Call it here
            console.log(vehicle);
            user.save();
        }
    })
    .catch(function(err) {
        console.log(err);
    });
}
0
Elliot Blackburn 1 मई 2018, 12:10