不能根据数组中的值进行多次查询?
Cannot conduct multiple queries based on values within array?
简而言之,我希望我的用户能够在搜索字段中输入各种 SKU 和 UPC(以逗号分隔),我在其中生成一组搜索值并执行迭代过程 return results/logic 每个值(即 1 个 UPC 可以代表 3 个 SKU,我会 return 搜索到的 UPC 产品最便宜的 SKU)。
- 从
Product.js
中找到带有 UPC 的产品。
- 从
vendorProduct.js
中找到具有 SKU 的产品。
我正在尝试做的一个例子:
// Search Array: UPC, SKU, SKU respectively.
var searchParams = ['342421111', '77HE2', 'U7IA2'];
// Declare var to hold search results.
var searchResults = {};
// For each value in array, get me results to work with.
for(i=0; i < searchParams.length; i++ ) {
Product.find({"UPC": searchParams[i]}).exec(function (err, results){
if(results.length >= 1) {
data[searchParams[i]] = results;
} else {
vendorProduct.find({"SKU": searchParams[i]}).exec(function (err, results){
if(results.length >= 1) {
data[searchParams[i]] = results;
} else {
data[searchParams[i]] = "No results.";
}
});
}
});
}
console.log(searchResults);
// This should return something like the below:
{
'342421111': [results inside],
'77HE2': [results inside],
'U7IA2': [results inside]
}
我已经研究了 lodash
和 async.js
等选项,但我不确定它能解决我想要做的事情。
我希望你们中的一位魔法师能帮助我!
看看async.map()
。
用法类似于...
var searchParams = ['342421111', '77HE2', 'U7IA2'];
async.map(searchParams, function(param, next) {
Product.find({ UPC: param }).exec(function(err, results) {
if (err) return next(err);
if (results.length) return next(null, results);
vendorProduct.find({ SKU: param }).exec(function(err, results) {
if (err) return next(err);
if (results.length) return next(null, results);
next(null, 'No results');
});
});
}, function(err, searchResults) {
if (err) {
// handle the error
return;
}
console.log(searchResults);
});
简而言之,我希望我的用户能够在搜索字段中输入各种 SKU 和 UPC(以逗号分隔),我在其中生成一组搜索值并执行迭代过程 return results/logic 每个值(即 1 个 UPC 可以代表 3 个 SKU,我会 return 搜索到的 UPC 产品最便宜的 SKU)。
- 从
Product.js
中找到带有 UPC 的产品。 - 从
vendorProduct.js
中找到具有 SKU 的产品。
我正在尝试做的一个例子:
// Search Array: UPC, SKU, SKU respectively.
var searchParams = ['342421111', '77HE2', 'U7IA2'];
// Declare var to hold search results.
var searchResults = {};
// For each value in array, get me results to work with.
for(i=0; i < searchParams.length; i++ ) {
Product.find({"UPC": searchParams[i]}).exec(function (err, results){
if(results.length >= 1) {
data[searchParams[i]] = results;
} else {
vendorProduct.find({"SKU": searchParams[i]}).exec(function (err, results){
if(results.length >= 1) {
data[searchParams[i]] = results;
} else {
data[searchParams[i]] = "No results.";
}
});
}
});
}
console.log(searchResults);
// This should return something like the below:
{
'342421111': [results inside],
'77HE2': [results inside],
'U7IA2': [results inside]
}
我已经研究了 lodash
和 async.js
等选项,但我不确定它能解决我想要做的事情。
我希望你们中的一位魔法师能帮助我!
看看async.map()
。
用法类似于...
var searchParams = ['342421111', '77HE2', 'U7IA2'];
async.map(searchParams, function(param, next) {
Product.find({ UPC: param }).exec(function(err, results) {
if (err) return next(err);
if (results.length) return next(null, results);
vendorProduct.find({ SKU: param }).exec(function(err, results) {
if (err) return next(err);
if (results.length) return next(null, results);
next(null, 'No results');
});
});
}, function(err, searchResults) {
if (err) {
// handle the error
return;
}
console.log(searchResults);
});