检查查询结果是否属于一个实例

时间:2015-08-20 11:35:43

标签: javascript mysql node.js sequelize.js

我有以下查询:

Promise.join<any>(
    db.User.findAll({
      where: {
        email: {
          $like: '%'+req.query.q+'%'
    }}}),
    db.Investor.findAll({
      where: {
        $or: {
          firstName: { $like: req.query.q+'%' },
          lastName: { $like: req.query.q+'%' }
    }}}),
    (users, investors) => {
      if (!users && !investors) {
        throw new error.NotFoundError('No result match your search criteria!');
      } else {
        return (users ? users : investors);
      }
    }
  ).then((results) => {
   ...

我怎么知道结果是一组用户还是投资者?它存在快速的方式吗?

2 个答案:

答案 0 :(得分:1)

我相信instance.constructor.name应包含您要查找的内容。也可以这样做

Instance instanceof db.User

但是你必须验证数组中的每个条目。您可以使用.map过滤掉任何不是两个

之一的结果
results.map( function(result) { return result instanceof db.User || result instanceof db.Investors} )

答案 1 :(得分:0)

您可以更改退货声明,如下所示。

return ( users ? { "users": users } : { "investors": investors } );

并解析返回的地图以获取"users""investors"个对象。