当一个用户进入他的个人资料时,他应该收到他所有的产品(活跃的和不活跃的,已经过期和未过期的),当他进入另一个用户的个人资料时,他应该只收到活跃的产品和那些放置期尚未到期的产品已到期。
例如
在这种情况下,我收到我的货物:
const user_id = 2; // в чей профиль я захожу
const decodedUserId = 2; // мой ид
在这种情况下,我得到了另一个用户的货物:
const user_id = 5; // в чей профиль я захожу
const decodedUserId = 2; // мой ид
如何查看我访问了谁的个人资料:
let products;
if (user_id == decodedUserId) {
products = (await db.query(UserProduct.getMerchantAllProductsByIdForUser(user_id))).rows;
} else {
products = (await db.query(UserProduct.getMerchantProductsByIdForUser(user_id))).rows;
}
class UserProduct {
static getMerchantProductsByIdForUser(user_id) {
const sql = `SELECT P.PRODUCT_ID, P.PRODUCT_NAME, P.ORIGINAL_PRICE, P.USER_ID
FROM PRODUCTS AS P
WHERE
P.END_DATE >= NOW()
AND P.ACTIVE = TRUE
AND P.USER_ID = '${user_id}'`;
return sql;
}
static getMerchantAllProductsByIdForUser(user_id) {
const sql = `SELECT P.PRODUCT_ID, P.PRODUCT_NAME, P.ORIGINAL_PRICE, P.USER_ID
FROM PRODUCTS AS P
WHERE
P.USER_ID = '${user_id}'`;
return sql;
}
}
export default UserProduct;
是否可以以某种方式组合这两个 sql 查询?这样我就调用了一个函数,而不是检查我的 id 是否等于我的通行证,并且根据这一点,调用某个函数。并且在sql查询中,检查是否user_id等于P.USER_ID表中的某个字段PRODUCTS,然后显示所有产品(活动和非活动,已过期和未过期),如果不相等,则只显示活动产品和放置的产品还没有过期。
const products = (await db.query(UserProduct.getMerchantAllProductsByIdForUser(user_id))).rows;
1 个回答