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