2017-03-03 34 views
0

我想比較我從Mongo獲得的數據到javascript數組。我正在使用lodash進行比較。但它總是返回不正確的結果。無法比較MongoDB數據與JavaScript數組

var editUser = function(userData, getOutFunction) { 
    var status = CONSTANTS.NG; 
    checkExistUser(userData._id).then(function(user) { 
     if (user !== null) { 
      var userGroup = JSON.stringify(user.group); 
      user.group = user.group.map((groupId) => { 
       return groupId.toString(); 
      }); 
      var removedGroups = _.difference(userGroup, userData.group); 
      var addedGroups = _.difference(userData.group, userGroup); 
      console.log('Removed Groups: ', removedGroups); 
      console.log('Added Groups: ', addedGroups); 
     } else { 
      status = CONSTANTS.NG; 
      logger.debug(DEBUG_CLASS_NAME, "Cannot find object"); 
      if (typeof(getOutFunction) !== 'undefined') { 
       getOutFunction(status, null); 
      } else { 
       NO_CALLBACK(); 
      } 
     } 
    }).catch(function() { 
     console.log('Promise is error'); 
    }); 

    var checkExistUser = function(userId) { 
     return new Promise(function(resolve, reject) { 
      UserDAO.findById(userId, function(err, user) { 
       if (err) { 
        logger.debug(DEBUG_CLASS_NAME, { 
         name: err.name, 
         code: err.code, 
         message: err.message, 
         method: "checkExist" 
        }); 
        resolve(null); 
       } else { 
        resolve(user); 
       } 
      }); 
     }); 
    } 

例如:當我嘗試輸入值lodash差函數

var user.group = ["58b8da67d585113517fed34e","58b8da6ed585113517fed34f"]; 
var userData.group = [ '58b8da67d585113517fed34e' ]; 

我想下面的結果lodash區別回報:

刪除羣組:['58b8da6ed585113517fed34f']

新增羣組: []

然而,該功能給我的結果,如:

刪除羣組:[]

新增羣組:[ '58b8da67d585113517fed34e' ]

誰能幫助我在這種情況下? 我會很欣賞它。

回答

0

我有過這樣的問題,也是從mongodb的結果是一個類型的ObjectId,所以你可以比較someObjectId.toString()值與字符串數組,或者你可以使用

someObjectId.equals(stringOrObjectIdValue) 

然而,如果你想繼續使用lodash函數,你必須強制這兩個數組在字符串或ObjectId之前傳遞給函數。