Javascript 如何使用承诺设置变量的值,然后使用Express将其发送到db?
我想使用node zillow模块来设置lastSoldDate的值,但是当我转到post时,我发现错误lastSoldDate是未定义的。这就是我到目前为止所做的:Javascript 如何使用承诺设置变量的值,然后使用Express将其发送到db?,javascript,node.js,express,promise,Javascript,Node.js,Express,Promise,我想使用node zillow模块来设置lastSoldDate的值,但是当我转到post时,我发现错误lastSoldDate是未定义的。这就是我到目前为止所做的: router.route('/add').post((req, res) => { const address = req.body.address const street = address.street const zipcode = address.zipcode
router.route('/add').post((req, res) => {
const address = req.body.address
const street = address.street
const zipcode = address.zipcode
const city = address.city
const state = address.state
paramaters = {
address: address.street,
citystatezip: address.city + ", " + address.state
}
zillow.get('GetDeepSearchResults', paramaters)
.then(function(results) {
date = results.response.results.result[0].lastSoldDate[0]
console.log(date)
return date;
}).then((date) => lastSoldDate = date)
const lastSoldPrice = req.body.lastSoldPrice
const newProperty = new property({
address:{
street,
zipcode,
city,
state,
},
lastSoldDate,
lastSoldPrice
})
newProperty.save()
.then(() => res.json('Property added!'))
.catch(err => res.status(400).json('Error: ' + err))
})
我假设
zillow.get()
是异步的,这意味着lastSoldDate=date
在所有其他命令之后运行很长时间。在(req,res)
之前插入async
,然后使用const lastSoldDate=wait zillow.get(…).then(…)
(您可以删除第二个then()
,它什么也不做)从const lastSoldPrice=req.body.lastSoldPrice
开始的代码需要在中。然后-因为异步工作就是这样将需要使用回调中数据的代码放在回调中,不要使用lastSoldDate=date
。还应使用const
声明参数、date
和lastSoldDate
变量,否则它们将变为globals@ChrisG成功了!我不敢相信事情会这么简单,非常感谢。