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.

Console.log

Bạn có thể sử dụng console.log để xuất dữ liệu vào nhật ký lần chạy quy trình làm việc của Flow nhằm mục đích khắc phục sự cố. Thông tin đầu ra sẽ hiển thị trong Nhật ký lần chạy của quy trình làm việc. Ví dụ như sau là hợp lệ:

export default function main(input) {
  console.log('Hello, world!');
  //Hello, world!
  console.log(input);
  // { order: { note: 'Hello', lineItems: [{ title: 'World' }] } }
  console.log(input.order, "is the order");
  // { note: 'Hello', lineItems: [{ title: 'World' }] }
  // is the order

  return {
    giftMessage: 'Hello',
    totalGifts: 1,
  };
}

Bạn không thể sử dụng console.info, console.error hoặc các hàm khác trong thao tác Chạy mã.

Ví dụ

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

Hạn chế

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).
  • 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.
  • Console.log không ghi vào bảng điều khiển của trình duyệt.

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ự.
  • Tải trọng dữ liệu đầu ra và thông tin đầu ra của Console.log bị giới hạn ở mức tổng cộng 50 kb.
  • 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
Đă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ố. Xong.
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í