2017-01-21 2 views
0

Ich bin auf der Suche nach einer E-Commerce-Web-App mit ES6, reagieren, react-redux und Ihre js-buy-sdk api. Mein Problem ist, dass nachdem ich alle Produkte von shopify abgeholt und in den Laden gelegt habe, ich scheinbar keine Daten über ein Produkt habe, wie ich es erwarten würde, sondern nur: { attrs, shopClient, serializer, type, config, _memoized }.Shopify-Buy-SDK Get Raw Produktdaten

Hier ist, wie ich den Anruf mache Produkte zu erhalten, unter einer Datei, die ich shopify.js genannt:

import ShopifyBuy from 'shopify-buy'; 

const shopClient = ShopifyBuy.buildClient({ 
    apiKey: 'xxxxxxxxxxxxxxxxxxxx1403c107adc7e', 
    domain: 'xxxxxxxxxxxxxxxx.myshopify.com', 
    appId: '6', 
}); 

export function fetchAllProducts() { 
    return new Promise((resolve, reject) => { 
    shopClient.fetchAllProducts() 
     .then((data) => { 
     console.log('shopClient.fetchAllProducts', data); 
     resolve(data); 
     }).catch((error) => { 
     console.error(new Error('Fetching products error!')); 
     reject(error); 
     }); 
    }); 
} 

am console.log Blick shopClient.fetchAllProducts das ist, was ich bekommen: chrome console

I Nehmen Sie data und legen Sie es in den Redux-Shop und wenn ich es ansehe, sieht es so aus: redux store

Wenn es relevant ist, überprüfen Sie this gist, um die Aktionen zu sehen, die ich verteile, und this gist, wo meine Aktionen reduziert und in den Laden gelegt werden.

Von meinem Verständnis, wenn Sie fetchAllProducts() Methode tun, erhalten Sie eine Reihe von ProductModel s, also nehme ich an in meinem Speicher gesetzt wird folgende { attrs, shopClient, serializer, type, config, _memoized } weil das, was intern ProductModel speichert ist.

Meine Frage ist, ist es eine Möglichkeit, ein rohes Objekt von Daten aus ProductModel (mit allen relevanten Produktwerten zu erhalten, wie in der ersten Screenshot und mit den Daten aus den Modellen, wie ProductOptionModel präsentiert, dass ProductModel verlässt sich auf), also kann ich das aus Gründen der Stabilität und Vernunft in meinen Laden legen?

Shopify API Referenz kann here gefunden werden.

Antwort

2

Wenn Sie nach unbearbeitetem Zugriff auf die Daten suchen, die für ein Produkt zurückgegeben werden, enthält die Eigenschaft attrs die API-Antwort JSON, ohne zusätzliche Logik oder Modelle.

Wenn möglich, würde ich vorschlagen, Ihren Code so zu organisieren, dass Sie diese Modelle nutzen können - wir haben sie hinzugefügt, weil die Rohdaten in einem besonders verwirrenden Format vorliegen können (speziell Varianten, Optionen, Bilder).

Wenn Sie möchten, dass Rohdaten für alle Produkte zurückgegeben werden, sollte so etwas funktionieren.

import ShopifyBuy from 'shopify-buy'; 

const shopClient = ShopifyBuy.buildClient({ 
    apiKey: 'xxxxxxxxxxxxxxxxxxxx1403c107adc7e', 
    domain: 'xxxxxxxxxxxxxxxx.myshopify.com', 
    appId: '6', 
}); 

export function fetchAllProducts() { 
    return new Promise((resolve, reject) => { 
    shopClient.fetchAllProducts() 
     .then((products) => { 
     resolve(products.map((product) => { 
      return product.attrs; 
     })); 
     }).catch((error) => { 
     console.error(new Error('Fetching products error!')); 
     reject(error); 
     }); 
    }); 
} 
+0

Ok. Cool, so 'attrs' sollte der richtige Ort sein, um die Rohdaten abzurufen. Danke für das! Der Grund, warum ich die Rohdaten möchte, ist, weil ich etwas wie https://facebook.github.io/immutable-js/ nutzen möchte und ich weiß noch nicht, wie das mit den Modellen von shopify ins Spiel kommen wird –

0

In Ihrem Beispielcode rufen Sie die API mit Ihrem geheimen API-Schlüssel auf? Sie verstehen, dass dies Ihr Geschäft so viel Missbrauch aussetzt, wie Sie es vielleicht nicht wollen, oder? Bist du sicher, dass du weißt, was du da machst?

+0

Ich dachte darüber nach, aber ich denke nicht, dass es zu Missbrauch führt. Zum Beispiel können Sie diese API nicht verwenden, um beispielsweise Produkte von Ihrem shopify-Administrator zu löschen. Das Maximum, das jemand tun kann, ist, Produktinfo zu holen und eine shopify Kassenseite damit zu erzeugen und sie schließlich zu kaufen, aber ich würde diesen Missbrauch nicht nennen, nur intelligenter Programmiererkäufer: D. Hier ist eine vollständige Spezifikation, was die API tut: http://shopify.github.io/js-buy-sdk/api/classes/ShopifyBuy.html –

+0

Macht Sinn ... es ist ein begrenzter Schlüssel, einfach gemacht, um Produkte zu bekommen . OK. gut gemacht. –