2017-10-03 16 views
1

でデータをフィルタリングするが、データtags: [{id: 1, name: 'Hey'}]次ている私のモデルtagsに私が持っているsequelizeでデータをフィルタリングしようとするとsequelize

を動作しないようです方法。だから、私はこのモデルからすべてのレコードを取得しようとしていますtagsと一致するtags要求から来たもの。 (彼らは、同様のデータをtags: [{id: 1, name: 'Hey'}]持っているが、私はすべてのレコードを持っている - 。>のみ$条件であなたのタグの場合1は

where: { 
    tags: { 
    $in: req.body.tags 
    } 
} 
+0

:[ 'タグ1'、 'TAG2'、 'TAG3'] ' –

+0

@SKJajoriya 、[オブジェクトオブジェクト]についてエラーが発生しません –

+0

あなたのタグは、あなたがクエリで渡したリクエストから来たものであることを表示できますか? –

答えて

0

値の配列ではなく、オブジェクト配列でなければなりませんなければならない

間違っ:正しい

tags: [{id: 1, name: 'work'}, {id: 2, name: 'party'}, ... ] 

// tags contains name|title of tags. now this is your choice. 
tags: ['work', 'party', 'whatever', ...] 

// tags contains id's of tags. for this you should change your where condition. 
tags: [1, 2, 3, ...] 

例:あなたはこの `$のように` $のin`にタグの配列をPaaSをする必要が

const tagsFromRequest = [{ id: 1, name: 'work' }, { id: 2, name: 'party' }]; 

const tagsIds = tagsFromRequest.map(tag => tag.id); 
const tagsNames = tagsFromRequest.map(tag => tag.name); 

const tagsByIds = await DB.tag.findAll({ 
    where: { 
    id: { 
     $in: tagsIds, 
    }, 
    }, 
}); 

const tagsByNames = await DB.tag.findAll({ 
    where: { 
    name: { 
     $in: tagsNames, 
    }, 
    }, 
}); 
関連する問題