Javascript 如何确保读取属性和值?

Javascript 如何确保读取属性和值?,javascript,graphql,reactjs,Javascript,Graphql,Reactjs,我正在使用graphql 我的后端终于设置好了,现在我正在努力将查询从前端发送到后端 想象一下这个问题: { login(Email:"MyEmail", Password:"MyCoolPasswordHello") {token refreshToken} } 我在想,我可以尝试使我的查询在前端可重新访问,因此我创建了一个查询文件并执行了以下操作: export enum QueryNames { login = 'login', } export const get

我正在使用graphql

我的后端终于设置好了,现在我正在努力将查询从前端发送到后端

想象一下这个问题:

{
    login(Email:"MyEmail", Password:"MyCoolPasswordHello")
  {token
  refreshToken}
}
我在想,我可以尝试使我的查询在前端可重新访问,因此我创建了一个查询文件并执行了以下操作:

export enum QueryNames {
  login = 'login',
}

export const getQuery = (query: QueryNames, params: any): any => {
  const queries = {
    login: `{login(${params}){token refreshToken}}`,
  }[query];

  if (!queries) return {};

  return queries;
};

export const query = (queryName: QueryNames, params: any) => getQuery(queryName, params);
它被称为:

console.log(getQuery(QueryNames.login, { Email: "Hello", Password: "HelloPassword" }));
export const makeArray = (obj) => Array.from(Object.keys(obj), k => [`${k}`, obj[k]]);
export const getQuery = (query: QueryNames, params: any): any => {
  const props = makeArray(params);

  // @ts-ignore
  // eslint-disable-next-line array-callback-return
  const funcParams = props.map(current => `${current[0]} : ${current[1]} `);

  const queries = {
    login: `mutation {login(${funcParams}){token refreshToken}}`,
  }[query];

  if (!queries) return {};

  return queries;
};
结果:

{login([object object]){token refreshttoken}}

我可以将我的登录名更改为

export const getQuery = (query: QueryNames, params: any): any => {
  const queries = {
    login: `{login(Emai:${params.Email} Password: ${params.Password}){token refreshToken}}`,
  }[query];

  if (!queries) return {};

  return queries;
};
然后我得到了想要的结果


有没有一种方法可以让我的属性名和值被读取,而不是让我显式地设置
电子邮件:
密码:

花了我一段时间,但解决方法如下:

console.log(getQuery(QueryNames.login, { Email: "Hello", Password: "HelloPassword" }));
export const makeArray = (obj) => Array.from(Object.keys(obj), k => [`${k}`, obj[k]]);
export const getQuery = (query: QueryNames, params: any): any => {
  const props = makeArray(params);

  // @ts-ignore
  // eslint-disable-next-line array-callback-return
  const funcParams = props.map(current => `${current[0]} : ${current[1]} `);

  const queries = {
    login: `mutation {login(${funcParams}){token refreshToken}}`,
  }[query];

  if (!queries) return {};

  return queries;
};
然后像这样使用它:

console.log(getQuery(QueryNames.login, { Email: "Hello", Password: "HelloPassword" }));
export const makeArray = (obj) => Array.from(Object.keys(obj), k => [`${k}`, obj[k]]);
export const getQuery = (query: QueryNames, params: any): any => {
  const props = makeArray(params);

  // @ts-ignore
  // eslint-disable-next-line array-callback-return
  const funcParams = props.map(current => `${current[0]} : ${current[1]} `);

  const queries = {
    login: `mutation {login(${funcParams}){token refreshToken}}`,
  }[query];

  if (!queries) return {};

  return queries;
};