我有两个产品和类别的集合,两个集合中都有数据产品(152)和类别(10)。因此,我尝试连接数据库以检索数据。首先,我使用async-await功能调用产品收集数据,然后调用产品类别收集数据。但是它获得了第一类数据和下一个产品数据。如何解决这个问题,任何人都可以给出答案。
product.js
async function product_data(collection){
let mongodb = await MongoDB.connect(collection)
let result = await mongodb.findAll()
return result
}
module.exports.product_data = product_data
category.js
async function category_data(collection){
let mongodb = await MongoDB.connect(collection)
let result = await mongodb.findAll()
return result
}
module.exports.category_data = category_data
app.js
const {product_data} = require("./product")
const {category_data} = require("./category")
async function updatedb()
{
let product_data = await product_data("ecomm_product")
console.log(product_data)
let category_data = await category_data("ecomm_category")
console.log(category_data)
}
我得到了结果
Its first print category_data after print product_data
例外结果
Its first print product_data after print category_data
答案 0 :(得分:0)
即使有明显的延迟(产品的解析时间比类别的解析时间更长),我也无法重现。将您的代码折叠到一个文件中,并使用正确的JS约定进行命名和大小写:
function getProductData(collection) {
return new Promise(resolve => {
setTimeout(() => resolve('product'), 2000);
});
}
function getCategoryData(collection) {
return new Promise(resolve => {
setTimeout(() => resolve('category'), 1000);
});
}
async function updatedb() {
let product_data = await getProductData("ecomm_product")
console.log(product_data)
let category_data = await getCategoryData("ecomm_category")
console.log(category_data)
}
updatedb();
这每次都会简单地产生以下输出:
$node test.js
product
category