Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用sequelize筛选数据_Javascript_Sequelize.js - Fatal编程技术网

Javascript 如何使用sequelize筛选数据

Javascript 如何使用sequelize筛选数据,javascript,sequelize.js,Javascript,Sequelize.js,尝试使用sequelize筛选数据,但似乎不起作用 我的模型中有标签,它们有以下数据标签:[{id:1,name:'Hey'}]。所以我试图从这个模型中获取所有记录,其中标记匹配标记来自请求的内容。(它们有相似的数据标记:[{id:1,name:'Hey'}]。但是我有所有记录->应该只有一条 where: { tags: { $in: req.body.tags } } 对于$in条件,您的标记应该是值数组,而不是对象数组 错: tags: [{id: 1, name: 'w

尝试使用sequelize筛选数据,但似乎不起作用

我的模型中有
标签
,它们有以下数据
标签:[{id:1,name:'Hey'}]
。所以我试图从这个模型中获取所有记录,其中
标记
匹配
标记
来自请求的内容。(它们有相似的数据
标记:[{id:1,name:'Hey'}]
。但是我有所有记录->应该只有一条

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

对于$in条件,您的标记应该是值数组,而不是对象数组

错:

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, ...]
例如:

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,
    },
  },
});

您需要在
$in
中paas一个标记数组,如下
$in:['tag1','tag2','tag3']
@SKJajoriya,关于[object object]的错误不起作用。您能告诉我您的标记来自您在查询中传递的请求吗?