我具有下面创建的AWS lambda函数,旨在定义软删除和硬删除我的产品。
exports.handler = async (event) => {
const product = JSON.parse(event.body);
let sql;
let msg;
let values;
if (product.action == 'delete') {
sql = "UPDATE product_table SET isDeleted=1, deletedon=? WHERE product_id=?";
msg = 'The product has been sucessfully deleted';
values = new Date();
} else if (product.action == 'restore') {
sql = "UPDATE product_table SET isDeleted=0, deletedon=? WHERE product_id=?";
msg = 'The product has been successfully restored';
values = null;
}
try {
const data = await new Promise((resolve, reject) => {
connection.getConnection(function (err) {
if (err) {
reject(err);
}
connection.query(sql, [values, product.product_id], function (err, result) {
if (err) {
console.log("Error->" + err);
reject(err);
}
resolve(result);
});
});
});
return {
statusCode: 200,
body: JSON.stringify(msg)
};
} catch (err) {
return {
statusCode: 400,
body: JSON.stringify(err.message)
};
}
};
想法是使用API中的单个delete方法,并在JSON对象中传递id和action值以在删除和恢复之间切换。
我能够在Postman上进行此工作,但不能从我的Angular Application中进行。我正在传递sam值,就像使用POST方法一样。您能帮我解决我所缺少的吗?
下面是角度代码:
deleteProductData(product_id:number,action:string) {
const header: HttpHeaders = new HttpHeaders()
.append('Content-Type', 'application/json; charset=UTF-8')
const httpOptions = {
headers: header,
body:JSON.stringify({ "product_id": product_id,"action":action })
};
return this.http.delete<any>(this.productGetUrl, httpOptions);
}
发现了问题。我的配置不正确。
[我试图在'body'内部发送delete方法的数据,不知道delete方法仅支持queryStringParameters或pathParameters。
我能够通过重构后端来解决此问题,类似于我配置GET请求的方式。
希望这可以帮助某人。
温馨的问候,阿迪