我正在使用异步等待进行数据库调用
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);
});
});
}
答案 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});
});
});
}