gpt4 book ai didi

JavaScript pouchDb 单文档数据检索

转载 作者:行者123 更新时间:2023-12-01 02:12:08 25 4
gpt4 key购买 nike

我对 JavaScript 还很陌生,我似乎无法在任何地方找到这个问题的答案。

我想检索 pouchDb get() 返回的 JSON,并能够在查询数据库时使用的 Promise 函数之外使用该数据。

这是我到目前为止已经尝试过的:

var row;
db.get(id)
.then(function(doc){
row = JSON.parse(JSON.stringify(doc));
})
.catch(function(err){
console.log(err)
})
console.log(row) //logs undefined

由于某种原因,我也随机尝试了这个并得到了意想不到的结果。

var myArray = []
var row;
db.get(id)
.then(function(doc){
row = JSON.parse(JSON.stringify(doc));
myArray.push(row)
console.log(myArray) //logs Array(1)> 0: Object> my JSON!
console.log(myArray[0]) //logs Object > my JSON!
console.log(myArray[0]._id) //logs My id from my db item
})
.catch(function(err){
console.log(err)
})
console.log(myArray) //logs Array(1) > 0: Object > my JSON!
console.log(myArray[0]) //logs undefined
console.log(myArray[0]._id) //throws Uncaught TypeError: Cannot read property '_id' of undefined + wall of red text

我希望这是有道理的——而且我可能从根本上误解了 javascript 的工作原理。

最佳答案

您不能像在代码中那样在 Promise 之外使用“get”数据库调用的结果。这是因为在数据库有机会响应之前,console.log 行已在程序中执行。如果您将 console.log 行放入 promise 结果中,它应该可以工作...

var row;
db.get(id)
.then(function(doc){
row = JSON.parse(JSON.stringify(doc));
console.log(row) //should now work
})
.catch(function(err){
console.log(err)
})

例如,您可以从您的 Promise 结果中调用另一个函数,或者如果您需要一件又一件地做一件事,您可以将 Promise 链接在一起。诺兰·劳森的文章 "We Have A Problem With Promises"看看这个,值得一读。

关于JavaScript pouchDb 单文档数据检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49685960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com