再写node.js时,使用异步方法时
var getSearchList= async function (id) {
const users = await itemcate.findAll();
var list = []
var tree = mymath.getDFSTree(users, 0);
getList(tree, id, list)
console.log(list)
return list
}
调用时,返回值异常
原因:返回值异常原因
解决方法
exports.getsearch = async (req, res) => {
//使用req.on 接受参数
// req.on('data',(postdata)=>{
// var data=JSON.parse(postdata.toString())
// // console.log(JSON.parse(postdata.category1Id.toString()))
// })
var cateid1 = req.body.searchParams.category1Id
var cateid2 = req.body.searchParams.category2Id
var cateid3 = req.body.searchParams.category3Id
var brand = req.body.searchParams.trademark
var props = req.body.searchParams.props
var str, str2, str3
var list = []
var currentid
var idlist = []
//判断所属第几级分类id 并拼写sql
if (cateid1 != null) {
str = `select id from tb_spu where cid1 = ${cateid1}`
var currentid = cateid1
}
if (cateid2) {
str = `select id from tb_spu where cid2 = ${cateid2}`
var currentid = cateid2
}
if (cateid3) {
str = `select id from tb_spu where cid3 = ${cateid3}`
var currentid = cateid3
}
var idList = await getSearchList.getSearchList(currentid)
console.log(idList)
//判断是否需要选择品牌
if (brand) {
str2 = `select s.id from tb_spu as s inner join tb_brand as c on s.brand_id = c.id where c.id in ${brand} and s.id in (${str})`
} else {
str2 = str
}
if (props) {
str3 = `select spu_id from tb_spu_detail where generic_spec like "%${props}%" and spu_id in (${str2})`
} else {
str3 = str2
}
db.query(str3, (err, results) => {
if (err) return console.log(err.message)
var array1 = []
for (var item in results) {
array1.push(item)
}
var sqlstr = `select s.*,c.* from tb_spu as s inner join tb_sku as c on s.id = c.spu_id where s.id in (${array1}) and c.id%27=1`
db.query(sqlstr, (err, results) => {
if (err) return console.log(err.message)
list.push(results)
var sqlstr1 = `select * from tb_spec_param where category_id in (${idList})`
db.query(sqlstr1, (err, results) => {
if (err) return console.log(err.message)
console.log(results)
})
})
})
res.send(req.body.data)
}
将外部方法也设为 异步