如何查询具有不同属性的模型

时间:2018-04-12 08:51:40

标签: javascript node.js sequelize.js

我在Express中构建应用程序并使用Postgres作为我的数据库,Sequelize用于ORM。

在我的数据库中,每个Post可以包含5种类型中的一种,12345

我想按类型显示所有帖子的数量。

router.route('/post).get(async (req, res) => {
  const postOne = await Post.findAll({
    where: { 
      state: 1
    }
  });
  const postTwo = await Post.findAll({
    where: { 
      state: 2
    }
});
res.send({ postOne: postOne.length, postTwo: postTwo.length });

我可以为所有5种类型编写这样的内容,但我想知道是否有更短的方法来做到这一点,以便我不必编写相同的代码5次。

谢谢!

2 个答案:

答案 0 :(得分:0)

const getPostWithType = (type) => Post.findAll({
  where: { 
    state: type
  }
});

现在你可以改为await getPostWithType(1)。甚至更好:

const postTypes = [1,2,3,4,5];
const allPosts = await Promise.all(postTypes.map(getPostWithType));

// allPosts is now an array with the results. You can map it again to get the lengths
const allPostLengths = allPosts.map(p => p.length);

答案 1 :(得分:0)

使用数组怎么样?如下......



let promiseArray = [];

for (let i = 1; i <= 5; i++) {
  let promise = Post.findAll({
    where: { 
      state: i
    }
  });

  promiseArray.push(promise);
}

Promise.all(promiseArray).then(function(response) {
  //Do whatever...
});
&#13;
&#13;
&#13;