###### 问题遇到的现象和发生背景
这是我一个node的接口,在我的本地服务器上可以正常返回数据,但是我部署到腾讯云的时候居然不能正常运行,我怀疑是我的pomise出了什么问题,这个循环居然停止了orData[0].forEach,求各位哥帮帮忙,今年九月才学的node,mysql靠百度,勿喷
###### 用代码块功能插入代码,请勿粘贴截图
getData: async (classify, uid ,offset) => {
let p = new Promise( async (resolve,reject)=>{
let pageSize= 10 //每次十条数据
let newclassify = classify === 'all' ? 0 : classify
let sql = classify === 'all' ? `select * from
wave_article INNER JOIN wave_user
ON wave_article.uid = wave_user.uid
WHERE wave_article.state = 0
ORDER BY wave_article.release_time DESC
limit ${offset},${pageSize}` :
`select * from
wave_article INNER JOIN wave_user
ON wave_article.uid = wave_user.uid
and
wave_article.classify='${newclassify}'
WHERE wave_article.state = 0
ORDER BY wave_article.release_time DESC
limit ${offset},${pageSize}`
let orData = await promisePool.query(sql)
// console.log("第一次查询")
// console.log("uid",query.uid)
let followData = null //关注
let fabulousData = null //点赞
if (uid !== '0') {
// console.log("uid不是空",uid)
let id = uid === '0' ? '0' : uid
let follow = await promisePool.query(`select nid from wave_follow where uid=${id} `)
followData = follow[0]
// console.log(followData)
console.log("第二次次查询")
let fabulous = await promisePool.query(`select cid from wave_article_fabulous where uid=${id}`)
fabulousData= fabulous[0]
// console.log(fabulousData)
console.log("第三次次查询")
}
let datas = []
let i =0
orData[0].forEach(async (item) => {
let obj = {}
obj.cid = item.cid //文章id
obj.comment_total = item.comment_total //评论数量
obj.uid = item.uid //发布文章用户的id
obj.title = item.title //文章标题
obj.content = item.content //文章内容
obj.username = item.username //发布文章的用户名字
obj.lable = item.lable //用户标签
obj.fabulous_total = item.fabulous_total //文章被点赞总数
if(item.fabulous_total>10000){
obj.fabulous_total = avg(item.fabulous_total ,10000) +'万'
}
obj.more = false //更多按钮的状态
obj.times = sd.fromNow(item.release_time) //对当前时间进行判断
obj.istype = item.istype //判断类型
obj.pic_list = [] //图片列表
obj.videos = { //视频
video_path: null,
video_pic: null,
}
//判断每个用户关注
obj.isfollow = false
//判断用户对文章点赞
obj.isfabul = false
//处理用户头像
let avatarUrl = item.avatar==="default_avatar.gif" ? `http://localhost:3000/images/${item.avatar}` : `http://localhost:3000/uploads/avatar/${item.avatar}`
//加上用户头像
obj.avatar = avatarUrl //发布文章的用户头像
//判断当前文章的博主是否被该用户关注
// followData查询的是当前登录用户的所有关注用户
followData && followData.map(data=>{
if(data.nid===obj.uid) {
return obj.isfollow = true
}
})
//判断当前文章是否被该用户点赞
// followData查询的是当前登录用户的所有关注用户
fabulousData && fabulousData.map(data=>{
if(data.cid===obj.cid) {
return obj.isfabul = true
}
})
//判断类型 0无图片无视频 1有图片 2有视频
if (item.istype === 0) {
datas.push(obj)
// console.log(obj)
} else if (item.istype === 1) {
// 处理图片
let piclist = item.pic_json.split('|')
// 裁去piclist数组最后一个空字符串
let newlist = piclist.slice(0, piclist.length - 1)
// 组合后的图片数组
let pic_list = []
newlist.map(item => {
//图片的详细参数,宽高等
imgsize = sizeOf(`public\\uploads\\article_pic\\${item}`)
let picobj = {}
picobj.pic = `http://localhost:3000/uploads/article_pic/${item}`
// 图片的宽高
picobj.width = imgsize.width
picobj.height = imgsize.height
if (imgsize.height / imgsize.width > 3) {
picobj.islong = true
} else {
picobj.islong = false
}
pic_list.push(picobj)
})
obj.pic_list = pic_list
//处理完成
datas.push(obj)
//视频
} else if (item.istype === 2) {
let vobj = {}
vobj.video_pic = `http://localhost:3000/uploads/article_video/${item.video_pic}`
vobj.video_path = `http://localhost:3000/uploads/article_video/${item.video_path}`
vobj.video_play_num = item.video_play_num
if(item.video_play_num>10000){
vobj.video_play_num = avg(item.video_play_num ,10000) +'万'
}
//生成时长的显示数
vobj.video_duration_str = deTime(item.video_duration)
obj.videos = vobj
datas.push(obj)
} else {
console.log("/api/data接口未知错误")
}
i++
console.log("i:",i,orData[0].length,datas.length)
if (i === orData[0].length) {
console.log("全部成功——————————————————————————————————————")
// console.log(datas)
resolve(datas)
}
})
})
let list = []
await p.then(res=>{
console.log("——————————————————————————————————")
// console.log(res)
list = res
})
return list
},
###### 运行结果及报错内容
这是在本地服务器的打印结果能正常返回数据
前端
###### 我的解答思路和尝试过的方法
###### 我想要达到的结果
怎么样才能正常返回数据给前端
两个问题检查 当前服务器能否正常访问 mysql
你的云服务器公网IP端口是否正常开放
no data found for resource with given identifier
找不到具有给定标识符的资源的数据
排查一: 在服务器上直接用curl 多次访问
排查二:本地利用postman工具访问
排查三:接口代理的nginx设置是否有问题
node项目部署到腾讯云
https://www.cnblogs.com/zhangran/p/12066787.html
是否是跨域的问题?服务器实际已响应并且返回数据,但是浏览器拒绝访问
先试试看你的mysql数据库能不能连上