2017-03-03 16 views
0

私はMongoから得たデータとjavascript配列を比較したいと思います。私はロダッシュを使って比較しています。しかし、常に不正確な結果が返されます。例えば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); 
       } 
      }); 
     }); 
    } 

削除グループ:['58b8da6ed585113517fed34f']

追加グループIはlodash差関数

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

のための入力値にしようとしたとき、私はその結果、以下のlodash差復帰をしたいです: []

削除グループ:ただし、関数は次のように私に結果を与えた[]

追加グループ:[ '58b8da67d585113517fed34e' ]

誰もがこのケースで私を助けることができますか? 私はそれを感謝します。

答えて

0

、あなたが文字列のあなたの配列でsomeObjectId.toString()の値を比較することができますので、私はMongoDBのから結果がのObjectId型であり、同様にこの問題を持っていたか、しかし

someObjectId.equals(stringOrObjectIdValue) 

を使用することができますlodash関数を使い続けたい場合は、関数に渡す前に両方の配列を文字列またはObjectIdに強制しなければなりません。

関連する問題