我对 Node js 和 Promise 都是全新的。我从客户端调用 API 及其主体,如下所示
return dbNameses.checkNamesAvailable(request.body.data.attributes.Names)
.then((results) => {
if(results <= 0) {
return dbNames.saveNewNames(request.body.data.attributes.Names).then((saveresults) =>{
return response.setStatusCode(200).setPayload({
message:"Name is saved"
})
}).catch()
}else {
return response.setStatusCode(500).setPayload({
message:"Name is already exist"
})
}
}).catch(err => {
return response.setStatusCode(400).setPayload({
message : err,
data : err.message
})
和saveNewNames函数如下
function saveNewNames(
Names /* :?string | void */
)/* :Promise<string> */ {
const connection = createConnection()
return new Promise((resolve, reject) => {
var newNames = [];
var seperatedNames = Names.split(',')
if(seperatedNames.length>2){
var firstNameLine = capitalFirstLetter(seperatedNames[0])
var secondNameLine = seperatedNames[1].toUpperCase()
var thirdNameLine = seperatedNames[2].toUpperCase()
var displayNames = firstNameLine + ',' + secondNameLine + ',' + thirdNameLine
newNames.push({
"Names": Names,
"display": displayNames
})
var NamesToDb = JSON.stringify(newNames).replace(/]|[[]/g, ''
)
const sql = `
INSERT INTO Names
(
names
)
VALUES
(
?
)`
const values = NamesToDb
const query = connection.query(sql, values, (error, results, fields) => {
connection.end()
if (error) {
return reject(error)
}
resolve(results)
})
}else{
return reject(new Error('Please add a valid names'))
}})
.catch((err) => {
reject("There was an error adding Names to database", err.message)
throw err
})
}
当用户添加不符合格式的无效名称时,它将返回reject(new Error('请添加有效名称')) 部分。并返回 400 错误。但我没有在 message : err 或 data : err.message 中收到该错误消息,而是在 data:err.message 中收到“reject is not Define”
有人可以帮我解决这个问题吗?
最佳答案
请检查 catch block :
return dbNameses.checkNamesAvailable(request.body.data.attributes.Names)
.then((results) => {
if(results <= 0) {
return dbNames.saveNewNames(request.body.data.attributes.Names).then((saveresults) =>{
return response.setStatusCode(200).setPayload({
message:"Name is saved"
})
}).catch(err => {
return response.setStatusCode(400).setPayload({
message : err,
data : err.message
})
} else {
return response.setStatusCode(500).setPayload({
message:"Name is already exist"
})
}
}).catch(err => {
return response.setStatusCode(400).setPayload({
message : err,
data : err.message
})
关于javascript - 不显示返回拒绝响应-nodejs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49021114/