Javascript 如何正确解析mongoDB调用中的承诺?

Javascript 如何正确解析mongoDB调用中的承诺?,javascript,Javascript,我正在尝试从mongoDB读取数据。最终,我希望从数据库检索到的数据是json格式的。我目前的职能如下: const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }) const getdata = async (): Promise<string[]> => { let alldata: string[] try { await client.

我正在尝试从mongoDB读取数据。最终,我希望从数据库检索到的数据是json格式的。我目前的职能如下:

const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true })

const getdata = async (): Promise<string[]> => {
  let alldata: string[]
  try {
    await client.connect()

    const database = client.db('data')
    const collection = database.collection('datacollection')

    const cursor = collection.find({ type: 'featureName' })
    alldata = await cursor.toArray()
    //console.log(alldata) //This correctly sends the required data to the console.
  } finally {
    void client.close()
  }
  //console.log(alldata) //This correctly sends the required data to the console.
  return alldata 
}

const data = getdata()

console.log(data) // this sends a "Promise { pending }"
const client=newmongoclient(uri,{useNewUrlParser:true,useUnifiedTopology:true})
const getdata=async():Promise=>{
让所有数据:字符串[]
试一试{
等待client.connect()
const database=client.db('data')
const collection=database.collection('datacollection'))
const cursor=collection.find({type:'featureName'})
alldata=wait cursor.toArray()
//log(alldata)//这将正确地将所需的数据发送到控制台。
}最后{
void client.close()
}
//log(alldata)//这将正确地将所需的数据发送到控制台。
返回所有数据
}
const data=getdata()
log(data)//这会发送一个“Promise{pending}”

我不熟悉javascript/typescript,但我认为我使用asyc函数和await的->做了所有正确的事情,但显然不是这样。任何关于我做错了什么的建议都将不胜感激。

您的函数将返回一个
承诺
,因此您需要使用
承诺。然后

例如


请查看此处的承诺文档:

已理解。但是,如果我将
console.log(data)
更改为
returndata
并在
getData()
行之前插入
const d=
。我仍然有同样的问题,
d
仍然是一个待定的承诺。是的,
d
将是一个待定的承诺。您只能从内部
然后((数据)=>…)
访问返回值是否有办法将返回值获取到外部
然后(…

getData().then((data) => {
  console.log(data);
});