承诺不从 express app.get Nodejs 返回解析

Promise not returning resolve from express app.get Nodejs

我正在尝试 return 根据承诺是否成功来解决或拒绝。我似乎无法弄清楚为什么这不是 return 响应。我从我的承诺中得到的只是 [object Object]。这就是我得到的回应。

代码如下:

app.get('/', (req,res) => {
    return new Promise((resolve,reject) => {
        var sql = "INSERT INTO usersinfo (firstname,lastname,email,number,latitude,longitude) VALUES(?,?,?,?,?,?)";
        conn.query(sql,[fname,lname,email,num,req.query.latitude,req.query.longitude], (err,result) => {
            if (err) {
                res.send('error')
                console.log(err,'there has been an error')
                reject('There was an error')
                return
            }else{
                console.log('inserted')
                resolve({ success:'true' })
            }
            res.end()
        })
    })
})

我在哪里获取 url:

const res = await fetch(`http://MYIPADDRESS?latitude=${latitude}&longitude=${longitude}`)
                console.log(res)

我好像不明白哪里出了问题。如果我附加 then((response) => console.log(response)) 方法,我会在 expo 应用程序中收到一条错误消息,显示 There was an error sending log messages to your development environment PrettyFormatPluginError:value.hasOwnProperty is not a function. (In 'value.hasOwnProperty('tag')','value.hasOwnProperty is undefined)

您不需要创建承诺。 send 方法可以异步调用——当响应就绪时:

app.get('/', (req,res) => {
    var sql = "INSERT INTO usersinfo (firstname,lastname,email,number,latitude,longitude) VALUES(?,?,?,?,?,?)";
    conn.query(sql,[fname,lname,email,num,req.query.latitude,req.query.longitude], (err,result) => {
        if (err) {
            res.send('error');
            console.log(err,'there has been an error');
        } else {
            res.send({ success:'true' }); // <---
            console.log('inserted');
        }
    });
});

注意:另外,没有必要调用 res.end(),因为 res.send() 已经暗示了这一点。

在客户端,您必须等待生成 JSON 内容:

const response = await fetch(`http://MYIPADDRESS?latitude=${latitude}&longitude=${longitude}`);
const result = await response.json(); // <---
console.log(result);