【发布时间】:2020-05-20 07:53:13
【问题描述】:
我有两个产品和类别集合,并且我有两个集合都有数据产品(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)
}
我得到了结果
打印product_data后的第一个打印category_data
预期结果
它在打印 category_data 之后的第一个打印 product_data
【问题讨论】:
-
我想首先我会问为什么你需要它们以特定的顺序?尽管如此,本质上它们只是承诺,一旦承诺被“解决”,它就会返回结果。除非链接它们,否则您无法真正控制订单,因此一旦
product_data返回,然后运行category_data -
因为在我的情况下 product_data 被映射到 category_data 我只希望首先将所有产品插入数据库。
-
你能粘贴你的输出吗?似乎没有问题。但怀疑 MongoDB 连接会导致问题。只是好奇
connect方法期望 MongoDB URL,而不是集合名称。 -
您的代码似乎认为它是 Python,因此您可能还想解决这个问题:按照惯例,函数和变量在 JS 中使用 lowerCamelCase(而不是 python 的 lower_snake_case),函数以它们的作用命名,并且变量名称为它们“在”什么。同样在minimal reproducible example 注意:没有理由将其显示为三个单独的代码块:这可以毫无问题地显示为单个块。
标签: node.js