Koa router 写api的时无法在同一个class中调用方法
最近在学习react和nodejs的交互,在写一个新增接口时,需要在class中用A方法调用B方法,但一直报错SyntaxError: Unexpected identifier
。
具体报错贴在下方代码中了:
const mysql = require("../../config/mysql");
const uuidv4 = require("uuid/v4");
class goodsController {
static async addGoods(ctx, next) {
let body = ctx.request.body;
let responseBody = {};
return new Promise((resolve, reject) => {
for (let i in body) {
if (body[i] === "") {
Object.assign(responseBody, {
apiStatus: 500,
sysStatus: 0,
info: "新增失败,参数不能为空"
});
ctx.body = responseBody;
reject();
}
}
console.log(this);
// 这一步调用的时候控制台一直提示
// SyntaxError: Unexpected token this
// 是因为在koa-router中写class无法识别this吗?
let brandList = await this.getBrandTitle(body.brandId);
console.log(brandList);
let brandTitle = "";
if (brandList.length > 0) {
brandTitle = brandList[0].title;
}
let id = uuidv4();
// 将生成的id及查询到的brandTitle赋值进body中
Object.assign(body, {
id,
brandTitle
});
let sql =
"INSERT INTO goods(id, name, brandTitle, brandId, marketPrice, sellingPrice) VALUES(?,?,?,?,?,?)";
let params = [
body.id,
body.name,
body.brandTitle,
body.brandId,
body.marketPrice,
body.sellingPrice
];
mysql.query(sql, params, (err, res, field) => {
if (err) {
throw err;
}
if (res.length > 0) {
console.log(res);
Object.assign(responseBody, {
apiStatus: 0,
sysStatus: 0,
info: "新增商品成功"
});
ctx.body = responseBody;
resolve();
} else {
Object.assign(responseBody, {
apiStatus: 500,
sysStatus: 0,
info: "新增商品失败,插入数据库失败"
});
ctx.body = responseBody;
reject();
}
});
});
}
getBrandTitle(brandId) {
return new Promise((resolve, reject) => {
let sql = "SELECT * FROM goods_brand WHERE id=?";
mysql.query(sql, brandId, (err, res, field) => {
if (err) {
reject(err);
throw err;
}
if (res.length > 0) {
resolve(res);
} else {
reject([]);
}
});
});
}
}
module.exports = goodsController;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这里有两个问题, 首先 addGoods 静态方法这里有问题
async 与 await 必须成对(同一个函数), 修改如下
另外一个问题是
addGoods静态方法
是不能调用实例方法
, 要么全部修改静态方法,要么改为实例方法