Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用承诺设置变量的值,然后使用Express将其发送到db?_Javascript_Node.js_Express_Promise - Fatal编程技术网

Javascript 如何使用承诺设置变量的值,然后使用Express将其发送到db?

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

我想使用node zillow模块来设置lastSoldDate的值,但是当我转到post时,我发现错误lastSoldDate是未定义的。这就是我到目前为止所做的:

 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成功了!我不敢相信事情会这么简单,非常感谢。