承诺不从 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);
我正在尝试 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);