array literal:此类型不能强制转换为字符串

时间:2018-02-08 08:22:39

标签: javascript ecmascript-6 template-literals

我有一个对象

console.log(`${arr}`);

我想在模板文字中使用它,因为我的用例但得到错误,假设我们使用模板文字记录此数组,如

array literal: This type can not be coerced to string

我们会收到此错误

query {
      processes(
        page: 1,
        itemsPerPage: 100,
        filterBy: ${where}, // This is where I am getting this error, I want to pass an array here
      ) {
        id
        businessKey
        name
        processDefinition {
          name
        }
        createDate
        endDate
        tasks {
          id
        }
      }    
    }

如何在模板文字中使用数组的任何替代解决方案?

这是我的用例我有查询

[Object Object]

但它会转换为const where = [{ name: 'endDate', op: 'is null' }]; 。我知道有限制所以如果你能提出更好的解决方案吗?

这是我的对象

if condition then
  do something

2 个答案:

答案 0 :(得分:0)

如果我理解正确,那么你要找的是:

filterBy: ${JSON.stringify(where)}, 

答案 1 :(得分:0)

我使用了这个功能

const formatArray = (array: Array<Object>) => {
    if (!array || array.length === 0) {
        return '[]';
    }
    const objs = array.map((obj) => {
        return Object.entries(obj)
            .map(([key, value]) => `${key}: "${String(value)}"`)
            .join(', ');
    });
    return `[{${objs.join('},{')}}]`;
};

并将查询更改为

query {
      processes(
        page: 1,
        itemsPerPage: 100,
        filterBy: ${formatArray(where)} // This is where I am formatting my array
      ) {
        id
        businessKey
        name
        processDefinition {
          name
        }
        createDate
        endDate
        tasks {
          id
        }
      }    
    }

并且有效。