【问题标题】:select max id in mysql nodejs在mysql nodejs中选择最大id
【发布时间】:2023-02-06 13:40:30
【问题描述】:

我想从 mysql 获取 max id,但我不断收到错误。

abc.jsx

async function mintNFT() {
    let id = await getNumberOfRow()
    console.log("this is id", id)
    return id;
}

async function getNumberOfRow() {
    axios.get("http://localhost:4000/getNumberOfRow").then(response => {
            console.log("response ", response.data[0])
            return response.data[0];
        })
        .then(posts => {
            return posts[0]
        })
        .then((err) => {
            console.log(err);
        })
    return;
}

索引.js

app.get("/getNumberOfRow", (req, res) => {
    db.query("SELECT MAX(id) FROM  NFTDetails", (err, result) => {
        if (err) {
            console.log(err)
        }
        res.send(result)
    });
})

输出

this is id undefined
Minter.jsx:47 response  {MAX(id): 154}
Minter.jsx:54 undefined   

我加了async-await,为什么还是先显示“这是id”?我该如何解决才能获得最大 ID?


编辑

在我为此编辑代码后,我得到了不同的输出。

async function getNumberOfRow() {
  try {
    const response = await axios.get("http://localhost:4000/getNumberOfRow");
    console.log("response ",response.data[0])
    return response.data[0][0]; // you could extract the first part to a variable `posts`, but doing so just adds a variable
  } catch (err) {
    console.log(err);
  }
}

输出

response  {MAX(id): 154}MAX(id): 154[[Prototype]]: Object
Minter.jsx:32 this is id undefined

【问题讨论】:

    标签: javascript mysql node.js reactjs


    【解决方案1】:

    您需要在 getNumberOfRow 中返回对 axios.get 的调用,并且根据您的处理方式,它不需要异步。

    function getNumberOfRow() {
      return axios.get("http://localhost:4000/getNumberOfRow").then(response => {
        console.log("response ",response.data[0])
        return response.data[0];
      })
      .then(posts => {
        return posts[0]
      })
      .catch((err) => {
        console.log(err);
      })
    }
    

    作为 async 函数,您可以这样写。

    async function getNumberOfRow() {
      try {
        const response = await axios.get("http://localhost:4000/getNumberOfRow");
        console.log("response ",response.data[0])
        return response.data[0][0]; // you could extract the first part to a variable `posts`, but doing so just adds a variable
      } catch (err) {
        console.log(err);
      }
    }
    

    【讨论】:

    • 谢谢,我已经编辑了我的帖子..我怎样才能得到这个输出这是编号 154
    • @Hoo 你又打错了,你用的是.then((err) =>而不是.catch((err) =>。使用.then获取id,打印它(你分配了变量名err,虽然这不是错误),然后丢弃它。
    • 我正在使用你的第二个异步函数,但 response.data[0][0]; 没有返回 154。
    • response.data[0][0]; 返回未定义
    • 这基于您的代码。试试response.data[0]["MAX(id)"]
    猜你喜欢
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 2013-05-31
    • 2021-09-28
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多