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

Check if the result of the query belongs to one instance

我有以下查询:

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) => {
   ...

我怎么知道结果是一组用户还是投资者?有没有快速的方法?

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

Instance instanceof db.User

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

results.map( function(result) { return result instanceof db.User || result instanceof db.Investors} )

您可以更改 return 声明如下。

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

并解析 returning 映射以获取 "users""investors" 对象。