Chạy mã

Thao tác Chạy mã triển khai JavaScript. Bạn có thể chuyển dữ liệu từ các bước trước trong quy trình làm việc sang để làm dữ liệu đầu vào cho thao tác Chạy mã và giá trị trả về sẽ được dùng trong các bước tiếp theo.

Trường

Thao tác Chạy mã chứa các trường sau.

Các trường được sử dụng trong thao tác Chạy mã.
Trường Mô tả
Nhập vào Bắt buộc. Truy vấn GraphQL để dùng dữ liệu từ các bước trước làm dữ liệu đầu vào cho thao tác Chạy mã.
Thông tin đầu ra Bắt buộc. Thể hiện dữ liệu sẽ được trả về bằng thao tác, được xác định trong ngôn ngữ định nghĩa lược đồ của GraphQL (SDL).
Bắt buộc. JavaScript mà thao tác Chạy mã sẽ triển khai.

Dữ liệu đầu vào

Có thể chuyển dữ liệu đầu vào từ các bước diễn ra trước đó cho thao tác Chạy mã. Để thêm dữ liệu này, bạn có thể ghi truy vấn GraphQL vào trường Dữ liệu đầu vào. Dữ liệu trả về từ truy vấn sẽ có sẵn dưới dạng đối số input của hàm được đánh dấu là export default. Bạn không cần xử lý việc phân trang hoặc sử dụng edgesnodes trong truy vấn vì Flow sẽ xử lý những việc này cho bạn.

Ví dụ về dữ liệu đầu vào nhằm lấy dữ liệu ghi chú đơn hàng và tiêu đề mục hàng:

{
  order {
    note
    lineItems {
      title
    }
  }
}

Dữ liệu này được chuyển đổi thành biến input có thể sử dụng trong mã:

export default function main(input) {
  // input.order.note
  // input.order.lineItems[0].title
}

Cũng có thể phân giải dữ liệu đầu vào trong chữ ký của hàm:

export default function main({order}) {
  // order.note
  // order.lineItems[0].title
}

Dữ liệu đầu ra

Có thể tùy chỉnh dữ liệu do thao tác Chạy mã trả về. Để xác định loại dữ liệu mã sẽ trả về, sử dụng trường Dữ liệu đầu raNgôn ngữ định nghĩa lược đồ (SDL) của GraphQL. Ví dụ: Để trả về chuỗi được gọi là giftMessage và số được gọi là totalGifts:

type Output {
  "The message to include in the gift"
  giftMessage: String!
  "The total number of gifts"
  totalGifts: Int!
}

Các nhận xét này không bắt buộc nhưng sẽ được sử dụng để mô tả dữ liệu trong giao diện người dùng Flow. Để xuất dữ liệu này trong mã JavaScript, hãy trả về một đối tượng khớp với loại:

export default function main(input) {
  // your code
  return {
    giftMessage: 'Hello',
    totalGifts: 1,
  };
}

Bạn cũng có thể xác định loại tùy ý để trả về dữ liệu phức tạp hơn. Ví dụ: Để trả về loại được gọi là Gift chứa chuỗi được gọi là message và số được gọi là amount:

type Output {
  "The gift to send"
  gifts: [Gift!]!
}

type Gift {
  "The message to include in the gift"
  message: String!
  "The total number of gifts"
  amount: Int!
}

Để truy cập dữ liệu này theo các bước tuần tự trong thao tác này, hãy sử dụng biến có tên Mã chạy sẽ được nhập theo lược đồ Output mà bạn xác định trong cấu hình thao tác Chạy mã. Bạn có thể sử dụng biến này trong cả điều kiện và thao tác.

Ví dụ

Bạn có thể tìm ví dụ về thao tác Chạy mã trong Kho ví dụ về Flow.

Giới hạn

Thao tác Chạy mã có những hạn chế sau:

  • Mã của bạn không thể nhập mô-đun.
  • Mã của bạn không thể thực hiện lệnh gọi http (fetch).
  • Mã của bạn không thể sử dụng console.log.
  • Không thể sử dụng hàm ngẫu nhiên và dựa trên thời gian. Có thể truyền vào dữ liệu ngày như scheduledAt hoặc createdAt dưới dạng dữ liệu đầu vào.

Ngoài ra, các giới hạn sau sẽ áp dụng:

  • Truy vấn dữ liệu đầu vào bị giới hạn ở 5000 ký tự.
  • Lược đồ dữ liệu đầu ra bị hạn chế ở mức 5000 ký tự.
  • Payload dữ liệu đầu ra bị giới hạn ở 50kb.
  • Mã không được vượt quá 50000 ký tự.
  • Tổng thời gian triển khai bị giới hạn ở 5 giây.
  • Mức sử dụng bộ nhớ bị giới hạn ở 10MB.

Lộ trình

Đội ngũ Flow dự định sẽ bổ sung chức năng cho thao tác Chạy mã dần dần. Bảng dưới đây nêu ra những cải tiến được lên kế hoạch thực hiện và ngày có hiệu lực dự kiến.

Lộ trình cải tiến thao tác Chạy mã
Cải tiến Mô tả Thời điểm giao hàng ước tính
Sửa lỗi Sửa lỗi và dọn dẹp Tháng 2 năm 2024
Đăng nhập Sử dụng "console.log" để xuất dữ liệu vào Nhật ký lần chạy cho mục đích khắc phục sự cố. Đầu tháng 4 năm 2024
Lệnh gọi API bên ngoài Sử dụng tính năng tìm nạp của JavaScript để gọi API. Quý 3 năm 2024

Ý kiến đóng góp

Thao tác Chạy mã là loại bước mới trong Shopify Flow. Nếu bạn có ý kiến đóng góp và thắc mắc, vui lòng bình luận vào bài viết cộng đồng Flow này.

Bạn đã sẵn sàng bán hàng với Shopify?

Dùng thử miễn phí