Javascript 异步函数似乎只返回“[对象承诺]”

Javascript 异步函数似乎只返回“[对象承诺]”,javascript,node.js,asynchronous,Javascript,Node.js,Asynchronous,所以我目前正在做一个基本的原型,遇到了一些错误。我有一个将用户添加到数据库的函数。在此之前,我让它读取并执行一个函数来检查id的最高值,然后将其添加到下一个查询中。但是,当我尝试这样做时,总是在我从数据库获取值之前执行向数据库添加用户的查询 在做了一些研究之后,我发现我可能不得不使用异步函数。我一直在试图找到一个适合我的问题的答案,但似乎找不到一个适合我的例子,我似乎有很多方法把它们写出来 我的密码是 async function maxIDD(maxID){ try{ connecti

所以我目前正在做一个基本的原型,遇到了一些错误。我有一个将用户添加到数据库的函数。在此之前,我让它读取并执行一个函数来检查id的最高值,然后将其添加到下一个查询中。但是,当我尝试这样做时,总是在我从数据库获取值之前执行向数据库添加用户的查询

在做了一些研究之后,我发现我可能不得不使用异步函数。我一直在试图找到一个适合我的问题的答案,但似乎找不到一个适合我的例子,我似乎有很多方法把它们写出来

我的密码是

async function maxIDD(maxID){
  try{
  connection.query('SELECT MAX(id) as maxID FROM users', (err,rows) => {
  var maxID = rows[0].maxID;
  console.log(maxID);
})
}
  catch (error) {
    console.log(error);
  }
  return maxID;
  }

第一个函数maxIDD是我运行查询以检查max id的函数,然后addData将用户添加到数据库中

这就是我目前所处的位置,我正在努力,去追寻这个答案https://stackoverflow.com/questions/50751048/node-js-waiting-for-variable-to-be-set?answertab=activetab-顶

然而,当我尝试返回我的值(在本例中为maxID)时,它只是被保存为macidvalue=[objectpromise]

我不知道怎么才能解决这个问题。我所需要做的就是查询数据库,并在其他地方使用该值。是否有人有任何建议或建议?

您需要等待返回值,以便代码执行在该点暂停,在返回结果并解决承诺时自动继续

const maxID2 = await maxIDD(maxID) + 1

wait运算符的返回值是异步函数生成的承诺的解析值。

每当您看到[object object]或类似内容时,都是因为您的代码试图将对象强制转换为字符串。使用console.log'macidvalue='+maxID2代替console.log'macidvalue=',maxID2查看对象不会解决异步函数始终返回承诺对象的问题。他们就是这么做的。const maxID2=等待maxIDDmaxID+1@trincot不需要额外的paren-wait的优先级高于binary+operator@MuhammadOvi我有?我知道我的问题不是最好的,也不是最好的,但你的答案也是。我已经阅读了用法,但仍然不明白如何使用它,因为我已经尝试了我认为有效的方法。如果你不知道没关系,我也不知道!很抱歉,我没有将它添加到我的代码中,但它仍然不起作用,这是我第一次尝试的,我将编辑我的代码我一直在更改iit以尝试新的东西,我认为这会起作用,但不幸的是没有。只要我能找到工作机会,我就会编辑这个问题solution@johnDoe请不要以更改上下文的方式编辑您的问题。如果您在给出原始问题的情况下尝试了上述方法,它应该会起作用。啊,也就是说,您的maxIDD函数也不正确,因为您在数据库函数的回调之外返回maxID。如果可能,对数据库使用异步API,而不是基于回调的API——除非您真的知道自己在做什么,否则这两种API不会很好地混合。
const maxID2 = await maxIDD(maxID) + 1