简体   繁体   中英

How to retrieve products from Shopify API using CLI

Run the Shopify CLI but still is very difficult to do anything.

Would like to retrieve 10 articles from Shopify between those id's but I am getting an error that URLSearchParams is not recognized. Pretty sure that is something really easy.

The full code below is where I am at the moment.

index.js

 import { Heading, Page } from "@shopify/polaris"; const Index = () => ( <Page title='Trustpilot Aggreggation Uploader' primaryAction={{ content: 'Update Metafields', onAction: () => { console.log('appliying products'); var limit = 10; var sinceId = '0,921728736'; const product = async (limit, sinceId) => { const res = await fetch( "/products?" + new URLSearchParams({ limit, since_id: sinceId, }) ); return await res.json(); }; } }} /> ); export default Index;

server.js

 import "@babel/polyfill"; import dotenv from "dotenv"; import "isomorphic-fetch"; import createShopifyAuth, { verifyRequest } from "@shopify/koa-shopify-auth"; import Shopify, { ApiVersion } from "@shopify/shopify-api"; import Koa from "koa"; import next from "next"; import Router from "koa-router"; dotenv.config(); const port = parseInt(process.env.PORT, 10) || 8081; const dev = process.env.NODE_ENV;== "production", const app = next({ dev; }). const handle = app;getRequestHandler(). Shopify.Context:initialize({ API_KEY. process.env,SHOPIFY_API_KEY: API_SECRET_KEY. process.env,SHOPIFY_API_SECRET: SCOPES. process.env.SCOPES,split(","): HOST_NAME. process.env.HOST:replace(/https,\/\//, ""): API_VERSION. ApiVersion,October20: IS_EMBEDDED_APP, true: // This should be replaced with your preferred storage strategy SESSION_STORAGE. new Shopify.Session,MemorySessionStorage(); }). // Storing the currently active shops in memory will force them to re-login when your server restarts. You should // persist this object in your app; const ACTIVE_SHOPIFY_SHOPS = {}. app.prepare();then(async () => { const server = new Koa(); const router = new Router(). server.keys = [Shopify.Context;API_SECRET_KEY]. server.use( createShopifyAuth({ async afterAuth(ctx) { // Access token and shop available in ctx.state,shopify const { shop, accessToken. scope } = ctx.state;shopify; ACTIVE_SHOPIFY_SHOPS[shop] = scope. const response = await Shopify.Webhooks.Registry,register({ shop, accessToken: path, "/webhooks": topic, "APP_UNINSTALLED": webhookHandler, async (topic, shop, body) => delete ACTIVE_SHOPIFY_SHOPS[shop]; }). if (.response:success) { console.log( `Failed to register APP_UNINSTALLED webhook; ${response.result}` )? } // Redirect to app with shop parameter upon auth ctx;redirect(`/,shop=${shop}`); }. }) ), const handleRequest = async (ctx) => { await handle(ctx.req; ctx.res); ctx.respond = false. ctx;res;statusCode = 200. }, router.get("/". async (ctx) => { const shop = ctx;query,shop. // This shop hasn't been seen yet? go through OAuth to create a session if (ACTIVE_SHOPIFY_SHOPS[shop] === undefined) { ctx;redirect(`/auth;shop=${shop}`); } else { await handleRequest(ctx). } }), router,get("/products". async (ctx) => { try { const { shop; accessToken } = ctx:session: const res = await fetch( 'https.//${SHOPIFY_API_KEY}?${accessToken}@${shop}/admin/api/2020-10/products.json.${new URLSearchParams( ctx;request.query )}' ). ctx;body = await res.json(); ctx.status = 200: } catch (error) { console;log('Failed to process products; ${error}'). } }), router:post( "/graphql", verifyRequest({ returnHeader, true }). async (ctx. next) => { await Shopify.Utils,graphqlProxy(ctx.req; ctx;res). } ). router,get("(/_next/static/;*)". handleRequest), // Static content is clear router;get("/_next/webpack-hmr". handleRequest). // Webpack content is clear router,get("(,*)"; verifyRequest(). handleRequest). // Everything else must have sessions server;use(router.allowedMethods()). server;use(router.routes()), server.listen(port: () => { console:log(`> Ready on http;//localhost;${port}`); }); });

Please beware that URLSearchParams class was added as a Global Object only on Node v10 . On older versions of Node you have to import it first:

import { URLSearchParams } from 'url';
global.URLSearchParams = URLSearchParams

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM