2016-11-30 20 views
-1

に私は依存コールバックを持っているこの私のコードを、コードを変換しますか?は約束

+0

'あなたは前からの結果を使用していませんクエリ? – Niezborala

+1

@Niezboralaいいえ、私は以前のクエリの結果を使用しません。しかし、2番目のクエリは、最初のクエリが条件を満たす場合にのみ実行されます。 – AJS

答えて

1

あなたを助けることができます: `db.collection(config.user)で

function findUser(user, id) { 
    db 
    .collection(user) 
    .find({ "_id": id }, function (err, result) { 
     if (err) { 
     return Promise.reject(err); 
     } 

     return Promise.resolve(result); 
    }); 
} 

function updateUser(user, uname, pwd) { 
    db 
    .collection(user) 
    .update({ 
     '_id': uname, 
     "pass": pwd 
    }, { 
     $set: { 
     'pass': pwd 
     } 
    }, function (err, result) { 
     db.close(); 

     if (err) { 
     return Promise.reject(err); 
     } 

     return Promise.resolve(result); 
    }); 
} 

Promise 
    .all([findUser(config.user, id), updateUser(config.user, uname, pwd)]) 
    .then(function (results) { 
    res.json({ "success": 1 }); 
    }) 
    .catch(function (errors) { 
    logger.error(errors); 
    }); 
+0

ありがとうございました!!! – AJS

0

多分これはあなたがこの方法でこれを行うことができますfindOneAndUpdate Docs

const MongoClient = require('mongodb').MongoClient 
MongoClient.connect('mongodb://localhost:27017/test', (err, db) => { 
    // Get the collection 
    const col = db.collection(config.user) 

    col.findOneAndUpdate(
    {'_id': id }, // filter 
    { $set: { 'pass': pwd } }, // update obj 
    { returnOriginal: false } // options 
).then(result => { 
    console.log(result) // the updated doc 
    }) 

})