Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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 TypeError:无法读取未定义的属性“then”。尝试运行updatefirst函数时出现此错误_Javascript_Node.js_Mongodb_Asynchronous_Promise - Fatal编程技术网

Javascript TypeError:无法读取未定义的属性“then”。尝试运行updatefirst函数时出现此错误

Javascript TypeError:无法读取未定义的属性“then”。尝试运行updatefirst函数时出现此错误,javascript,node.js,mongodb,asynchronous,promise,Javascript,Node.js,Mongodb,Asynchronous,Promise,我正在尝试运行updatefirst函数,但一次又一次地出现相同的错误,即使我在get_plo_amount中将预定义的值传递给resolve函数,console.logresult行仍会运行,这表明在获取数据时没有问题。我不知道我做错了什么:。任何帮助都将不胜感激。谢谢 const get_plo_amount = function(p){ plo.findOne({phone : p}).then((result) => { console.log(result

我正在尝试运行updatefirst函数,但一次又一次地出现相同的错误,即使我在get_plo_amount中将预定义的值传递给resolve函数,console.logresult行仍会运行,这表明在获取数据时没有问题。我不知道我做错了什么:。任何帮助都将不胜感激。谢谢

const get_plo_amount = function(p){
    plo.findOne({phone : p}).then((result) => {
        console.log(result) //this line is running
        return new Promise((resolve,reject) => {
            resolve(result.daily_amount)
        })

    }).catch((e) => {
        console.log("catch")
        return new Promise((resolve,reject) => {
            reject(e)
        })
    })

}

//updatefirst
const updatefirst = function(plo,date){
    driver.find({associated_plo : plo}).then((result) => {
        //console.log(result)//delete this
        get_plo_amount(plo).then((amount) => {
            console.log(amount)
            var arr
            for(i=0;i<result.length;i++){
                var pdue = parseInt(result[i].balance) + amount
                var d_obj = {
                    driver : result[i].name,
                    phone : result[i].phone,
                    auto_number : result[i].auto_number,
                    amount : pdue,
                }
             //   console.log(d_obj)//delete this
                arr[i] = d_obj
            }

            const obj = {
                associated_plo : plo,
                date : date,
                earning : "0",
                payments : arr
            }
            const t = new transactions(obj)

            t.save().then(() => {
                return "success"
            }).catch((e) => {
                return e
            })

        }).catch((e) => {
            console.log(e)
            return e
        })


    }).catch((e) => {
        console.log(e)
        return e
    })
}

你应该回报一个承诺,让这个方法起作用。 尝试如下方式更新您的函数:

const get\u plo\u amount=functionp{ 返回plo.findOne{phone:p}。然后返回结果=>{ console.logresult//此行正在运行 返回新的PromiseSolve,拒绝=>{ resolveresult.daily_金额 } }.catch=>{ 控制台.日志捕获 返回新的PromiseSolve,拒绝=>{ 拒绝 } } } 2更多变化

您可以返回result.daily_金额,而无需创建其他承诺 捕获物中的承诺是拒绝,因此您不妨删除捕获物 const get\u plo\u amount=functionp{ 返回plo.findOne{phone:p}。然后返回结果=>{ console.logresult//此行正在运行 结果:每天的金额; }; }
你能在问题中加上整个错误信息吗?您可以编辑问题以添加详细信息。非常感谢!