我如何通过等待访问解析数组中的2个元素

时间:2019-03-27 05:26:31

标签: javascript node.js

我正在使用异步等待进行数据库调用

let result = await cb.addDoc(req.bucket,docKey,newContact)

我调用的函数是一个承诺并且可以正常工作,但是访问解析的第二部分时遇到了问题。我的结果始终是docId。如何获得解析器中的结果?

const addDoc = (bucket,docID,doc)=>{
    return new Promise((resolve,reject)=>{
      bucket.insert(docID,doc,(err, result)=>{
        if(err) return reject(err);
        return resolve(docID ,result);

      });
    });
  }

2 个答案:

答案 0 :(得分:2)

承诺本质上是指随着时间的推移而解决的价值,因此您不能通过多个属性来解决承诺。但是您可以创建对象或数组并使用它进行解析。

let { docID, result } = await cb.addDoc(req.bucket, docKey, newContact);

const addDoc = (bucket, docID, doc) => {
  return new Promise((resolve, reject) => {
    bucket.insert(docID, doc, (err, result) => {
      if (err) return reject(err);
      return resolve({ docID, result });
    });
  });
};

答案 1 :(得分:1)

改为返回数组或对象

 const addDoc = (bucket,docID,doc)=>{
return new Promise((resolve,reject)=>{
  bucket.insert(docID,doc,(err, result)=>{
    if(err) return reject(err);
    return resolve([docID ,result]);

  });
});
}


 const addDoc = (bucket,docID,doc)=>{
return new Promise((resolve,reject)=>{
  bucket.insert(docID,doc,(err, result)=>{
    if(err) return reject(err);
    return resolve({docID ,result});

  });
});
}