我如何 return Cloudant 插入状态?

How do I return Cloudant insert status?

我有以下代码:

updateDocument = (data) => {
   Cloudant(CONN_STRING, (err, cloudant) => {
    if (err) {
        throw new Error('Failed to initialize Cloudant: ' + err.message);
    }

    let db = cloudant.db.use('my-db')

    db.insert(data, (err, result) => {
        if (err) {
            throw new Error('Failed to initialize Cloudant: ' + err.message);
        }
        else {
            console.log(result);
        }
    })
  });
}

我想要 updateDocument() 到 return db.insert 提供的结果。但是,如果我尝试 return 一个未定义的变量(我相信是因为异步调用)。我试过 asyncawait,但我可能没有正确设置它们,因为它们也不起作用。

感谢您的帮助!

这是一个 "JavaScript is asynchronous" 问题。您可以像这样简化 updateDocument 函数:

updateDocument = (data) => {
   var cloudant = Cloudant({ url: CONN_STRING, plugin: 'promises');
   let db = cloudant.db.use('my-db')
   return db.insert(data);
}

这是使用带有 "promises" 插件的 Cloudant 库。 JavaScript Promises 帮助您管理异步调用而无需传递回调函数。

您可以这样调用此代码:

updateDocument({a: 1, :b})
  .then((data) => {
    console.log('success!', data);
  }.catch((e) => {
    console.log('oops!', e);
  });

成功到达'then',失败到达'catch'子句