Javascript 如何正确解析mongoDB调用中的承诺?
我正在尝试从mongoDB读取数据。最终,我希望从数据库检索到的数据是json格式的。我目前的职能如下: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.
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);
});