Hi everyone! 👋
I’m working on a custom product review system in MedusaJS v2 using workflows.
import {
createWorkflow,
transform,
when,
WorkflowResponse
} from "@medusajs/framework/workflows-sdk"
import { useQueryGraphStep, uploadFilesStep } from "@medusajs/medusa/core-flows"
import { createReviewStep } from "./steps/create-review"
import type { FileDTO } from "@medusajs/types"
export const createReviewWorkflow = createWorkflow("create-review", (input) => {
// Step 1: Validate product
useQueryGraphStep({
entity: "product",
fields: ["id"],
filters: { id: input.product_id },
options: { throwIfKeyNotFound: true },
})
// Step 2: Upload Images if any
const uploadedFiles = when(input, (i) => !!i.images?.length).then(() =>
uploadFilesStep({
files: input.images?.map((img) => ({
filename: img.filename,
mimeType: img.mimeType,
content: img.content,
access: img.access,
})) || [],
})
) as FileDTO[]
// Step 3: Create Review
const review = createReviewStep({
...input,
uploadedFileIds: uploadedFiles?.map((f) => f.id) || [],
})
return new WorkflowResponse({
message: "Review created successfully",
review,
})
})
ERROR:
error: Error starting server
error: input?.images?.map is not a function
TypeError: input?.images?.map is not a function
at /home/sandip-shrestha/Desktop/Medusa/core/src/workflows/create-review.ts:47:39
at Object.then (/home/sandip-shrestha/Desktop/Medusa/core/node_modules/.pnpm/@medusajs+workflows-sdk@2.6.1_@mikro-