2015-06-06 24 views
0

Я импортирую продукты из корма ja. У продукта есть дизайнер и категория, и я сделал их отдельными таблицами (объектами). Проблема в том, что мне нужно проверить, существует ли категория или дизайнер, поэтому мне не нужно ее создавать. В настоящее время я не проверяю, что он вызывает много дубликатов в моей БД. Если я буду проверять БД, это асинхронно, но на самом деле мне это нужно как-то серийно. Любые идеи?Как проверить, существует ли объект?

for (var i=1;i<productsFromFeed.length;i++){ 
    productId = parseInt(productsFromFeed[i][1]); 

     if (productId > lastProduct.get("productId")){ 
      console.log("Product is new: " + productId); 

      var Designer = Parse.Object.extend("Designer"); 
      var Product = Parse.Object.extend("Product"); 
      var Category = Parse.Object.extend("Category"); 

      var designer = new Designer(); 
      designer.set("name", productsFromFeed[i][4]); 
      designer.set("designerId", parseInt(productsFromFeed[i][5])); 

      var category = new Category(); 
      category.set("name", productsFromFeed[i][6]); 
      category.set("categoryId", parseInt(productsFromFeed[i][7])); 

      var newProduct = new Product(); 
      newProduct.set("productName", productsFromFeed[i][0]); 
      newProduct.set("productId", parseInt(productsFromFeed[i][1])); 
      newProduct.set("designer", designer); 
      newProduct.set("category", category); 

      objects.push(newProduct); 

     } else { 
      console.log("Product already exists: " + productId); 
     } 
    } 
+0

Использовать кеш, как redis, хранить только существование объектов без атрибутов –

+0

Parse.com не поддерживает redis –

+0

Ну вопрос был помечен node.js тоже. Я был просто диким предложением –

ответ

0

Он не должен быть серийным, вам просто нужно иметь дело с асинхронным характером, что вы пытаетесь сделать - с помощью обещаний.

Вы можете запустить запрос, чтобы найти все заранее и локально кешировать их, это полезно только в том случае, если вы делаете массовый импорт, ваш код выглядит как небольшой массовый импорт, но неясно, будет ли это эффективный подход.

В вашем случае просто запустите свои запросы и используйте обещания, чтобы объединить каждую логическую сцену вместе. Обратите внимание, что для вашего цикла вы можете поместить полученные обещания в массив и подождать, пока они не будут завершены.

+0

мог бы объяснить вам более подробно, может быть, с кодом? Извините, я совершенно новичок в статистических материалах, включая обещания –

+0

Лучше всего начать с нежного чтения, например http://blog.parse.com/learn/engineering/whats-so-great-about-javascript-promises/, затем подумайте о том, как многие дизайнеры и категории должны решить, как проверить дубликаты (не могли бы вы попытаться добавить один и тот же один раз для новой партии?) – Wain

Смежные вопросы