【问题标题】:Javascript filter data that does not exists from a queryJavascript 过滤查询中不存在的数据
【发布时间】:2019-08-22 04:04:30
【问题描述】:

我的代码如下。该值是一个对象数组。然后我从每个对象中得到一个过滤器,即 VIN。然后我使用 vin 数据作为过滤器从数据库中过滤数据。现在我想知道如何将数据库中不存在的那些数据与值对象分开。将那些从查询结果中找不到的数据从值对象中分离出来。谢谢。

代码

>   complete: function (results, content) {
> 
>               var results = _.each(results, function (value, key) {
>                   for (i = 0; i < value.length; i++) {
> 
>                       var itemToUpdate = {
>                           VIN: value[i].VIN
>                       }
> 
>                       Vehicle.model.findOne(itemToUpdate, function (error, vehicleObject) {
> 
> 
>                           if (vehicleObject) {
> 
>                               console.log("vehicleObject VIN" , vehicleObject.VIN)
>   
> 
>                           }
> 
>                           
> 
>                       })
> 
>                       
> 
>                   }
> 
>               })

【问题讨论】:

    标签: javascript node.js mongodb mongoose filter


    【解决方案1】:
    complete: async (results, content) {
        let notInDbValue = [];
        for (i = 0; i < results.length; i++) {
            for (j = 0; j < results[i].length; j++) {
                var itemToUpdate = {
                    VIN: results[i][j].VIN
                }
                let vehicleObject = await Vehicle.model.findOne(itemToUpdate);
                if (vehicleObject) {
                    console.log("vehicleObject VIN", vehicleObject.VIN);
                } else {
                    notInDbValue.push(results[i]);
                }
    
            }
        }
    }
    

    【讨论】:

    • 为什么当我在循环外访问notInDbValue时,数组是空的?
    • 由于异步函数数据在猫鼬函数之外不可用。我已经更新了答案,请检查
    • await 只在异步函数中有效
    • 让你的函数异步
    • 我确实按照你的回答
    猜你喜欢
    • 2014-11-04
    • 2022-11-04
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 2011-08-22
    • 2022-08-23
    相关资源
    最近更新 更多