Node.js 如何检查对象是否已经存在?

Node.js 如何检查对象是否已经存在?,node.js,parse-platform,promise,parse-cloud-code,Node.js,Parse Platform,Promise,Parse Cloud Code,我正在从产品提要导入产品。一个产品有一个设计器和一个类别,我将它们制作成单独的表(解析类) 现在的问题是,我需要检查类别或设计器是否已经存在,所以我不需要创建它 目前我没有检查它,导致我的数据库中有许多重复项。如果我签入DB,它将是异步的,但实际上我需要它以某种方式连续(序列化)。。有什么想法吗 for (var i=1;i<productsFromFeed.length;i++){ productId = parseInt(productsFromFeed[i][1]);

我正在从产品提要导入产品。一个产品有一个设计器和一个类别,我将它们制作成单独的表(解析类)

现在的问题是,我需要检查类别或设计器是否已经存在,所以我不需要创建它

目前我没有检查它,导致我的数据库中有许多重复项。如果我签入DB,它将是异步的,但实际上我需要它以某种方式连续(序列化)。。有什么想法吗

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);
        }
    }
for(var i=1;i lastProduct.get(“productId”)){
log(“产品是新的:+productId”);
var Designer=Parse.Object.extend(“设计器”);
var Product=Parse.Object.extend(“产品”);
var Category=Parse.Object.extend(“Category”);
var designer=new designer();
designer.set(“名称”,productsFromFeed[i][4]);
designer.set(“designerId”,parseInt(productsFromFeed[i][5]);
var category=新类别();
类别.集合(“名称”,productsFromFeed[i][6]);
category.set(“categoryId”,parseInt(productsFromFeed[i][7]);
var newProduct=新产品();
newProduct.set(“productName”,productsFromFeed[i][0]);
newProduct.set(“productId”,parseInt(productsFromFeed[i][1]);
newProduct.set(“设计器”,designer);
newProduct.set(“类别”,category);
对象。推送(新产品);
}否则{
log(“产品已存在:+productId”);
}
}

它不需要是串行的,您只需要处理您试图做的事情的异步性质—使用承诺

您可以运行一个查询来提前查找所有内容并在本地缓存它们,这只有在您进行批量导入时才有用,您的代码看起来确实像一个小批量导入,但不清楚这是否是一种有效的方法


在您的情况下,只需运行查询并使用承诺将每个逻辑阶段链接在一起。请注意,对于您的循环,您可以将生成的承诺放入一个数组中,等待它们全部完成。

使用类似redis的缓存,只存储对象的存在无属性Parse.com不支持redisWell问题也被标记为node.js。我只是一个粗野的建议,你在代码中的什么地方与数据库交互,哪里是异步的?你能详细解释一下吗,也许是代码?抱歉,我对统计资料(包括promisesBest)很陌生,先从一些温和的阅读开始,然后想想有多少设计师和类别你必须决定如何检查重复(你能尝试为新批次多次添加相同的吗?)