xStore.reviews

Đánh giá sản phẩm.

Phương thức

Phương thức Cú pháp Mô tả Từ phiên bản
list xStore.reviews.list({ product_id, cursor?, limit? }): Promise<CursorPage<Review>> Đánh giá đã duyệt của một sản phẩm. 1.0
submit xStore.reviews.submit({ product_id, rating, title, body }): Promise<Review> Gửi đánh giá mới; cần đăng nhập. 1.0
listMine xStore.reviews.listMine({ cursor, limit }) hoặc xStore.reviews.listMine(cursor?, limit = 20): Promise<CursorPage<Review>> Đánh giá của chính khách đang đăng nhập. 1.0
delete xStore.reviews.delete(reviewId): Promise<void> Xoá một đánh giá của mình. 1.0

Ví dụ đầy đủ

<script>
  // Đọc đánh giá không cần đăng nhập; gửi đánh giá thì có.
  async function renderReviews(productId) {
    const page = await xStore.reviews.list({ product_id: productId, limit: 10 });

    document.getElementById('reviews').innerHTML = page.items.map((r) => `
      <li>
        <strong>${'★'.repeat(r.rating)}</strong> ${r.title}
        <p>${r.body}</p>
        <small>${xStore.utils.formatDate(r.created_at)}</small>
      </li>
    `).join('');
  }

  document.getElementById('review-form').addEventListener('submit', async (e) => {
    e.preventDefault();
    const form = e.currentTarget;

    try {
      await xStore.reviews.submit({
        product_id: form.dataset.productId,
        rating:     Number(form.rating.value),
        title:      form.title.value,
        body:       form.body.value,
      });
      form.reset();
      renderReviews(form.dataset.productId);
    } catch (err) {
      if (err.status === 401) {
        window.location.href = '/dang-nhap?next=' + encodeURIComponent(location.pathname);
      } else {
        alert(err.message);
      }
    }
  });

  renderReviews(document.getElementById('review-form').dataset.productId);
</script>

Thư viện gọi tới /api/... trên chính tên miền cửa hàng, nên không cần khai báo địa chỉ máy chủ ở bất kỳ đâu.

Xem thêm Sự kiện để giao diện tự cập nhật sau mỗi thao tác.