为什么会出现错误“标识符...已被声明”?

时间:2019-08-16 17:52:32

标签: node.js

我在调用返回对象的函数时遇到问题。该函数如下所示。

function upsertDoc(bucketName,docID,doc){
        let bucket = bucketWithName(bucketName)
        return new Promise((resolve,reject)=>{
            bucket.upsert(docID,doc,(err, result2)=>{
            if(err) return reject(err);
            return resolve({docID, result});
            });
        });
        }

如果我这样称呼它会很好

let { docID, result } = await couch.upsertDoc('contacts',id, myLookup)

我的问题是,如果我在此呼叫之前致电

let { docID , result} = await couch.getDoc('contacts',id)

系统抱怨“ SyntaxError:标识符'result'已被声明 “
所以问题是如何重新分配docID并将结果作为

{ docID, result } = await couch.upsertDoc('contacts',id, myLookup)

不起作用

1 个答案:

答案 0 :(得分:2)

您需要更改结果之一的名称。

let { docID: docId2 , result: result2} =  await couch.upsertDoc('contacts',id, myLookup)

例如,这会将实例的结果重命名为result2。

您不能在相同范围内声明相同的变量名称。

如果您想将它们重新分配给相同的变量,则必须在事后执行。

let { docID: docID2 , result: result2} =  await couch.upsertDoc('contacts',id, myLookup)
docID = docID2;
result = result2;