2016-06-24 3 views
0

배열에없는 모든 값을 Sequelize에서 반환하겠습니다.

$ notIn의 값이 빈 배열 인 경우 Sequelize는 아무 것도 반환하지 않지만 배열에 빈 값이 있으면 나를 반환합니다.

이 나에게 아무 것도 반환하지 않습니다 :

db.foo.findAll({ 
    where: { 
     id: { 
     $notIn: [] 
     } 
    } 
    }); 

이 나에게 모든 값을 반환 배열이 빈 상태 (empty)의 경우 모든 값을 반환하지 않습니다 와서 어떻게

db.foo.findAll({ 
    where: { 
     id: { 
     $notIn: [''] 
     } 
    } 
    }); 

를? 값이 비어 있으면 해당 배열에없는 값이 반환되어야 함을 의미합니다. ID에는 값이 없으므로 sequelize는 모든 값을 반환해야합니다. 맞습니까?

답변

3

이 문제는 Sequelize 버전 4에서 해결 될 예정입니다. 그러나이 버전은 아직 완전히 공개되지 않았습니다. 최소한 아직 문서가 없습니다.

https://github.com/sequelize/sequelize/issues/4859의 GitHub 문제를 참조하십시오.

변경 내역은 https://github.com/sequelize/sequelize/blob/master/changelog.md에 있습니다. 그것은 말한다

[고정] $의 notIn : [] 이제 어쩌면 당신은 그 버전 현재 코드를 직접 4 변경 사항을 적용 할 수 있습니다 NOT IN (NULL) # 4859

로 변환됩니다. < 4 버전을 사용하는 사람들을 위해

+0

예, 이미했습니다. 그것은 단지 다소 별났다. 그리고 나는 이유를 알고 싶었다. 링크를 가져 주셔서 감사합니다. – thadeuszlay

0

, 여기에, 나는 주위에 작품이 사용되는

let idsToSkip = [...]; //generate array of ids, this may result in empty array 
idsToSkip.push('-1'); // push a value that can not be the id in table. this will generate `not in ('-1')` query serving the purpose. 
db.foo.findAll({ 
    where: { 
    id: { 
     $notIn: idsToSkip 
    } 
    } 
}); 

는 희망이 도움이!

관련 문제