Я использую nuxt js.Есть ли способ отделить код от метода, который будет использоваться во многих других методах запросов, и поместить его в другую папку / местоположение, возможно, назвать его devour.js
async asyncData({ $axios, route, params, $auth }) {
const jsonApi = new JsonApi({ apiUrl: $axios.defaults.baseURL });
jsonApi.headers["Authorization"] = $auth.getToken("local");
// this code below defining models i call it in many other pages many times //
jsonApi.define("team", {
name: "",
abbreviation: "",
sport: {
jsonApi: "hasOne",
type: "sports"
}
});
jsonApi.define("sport", {
name: "",
teams: {
jsonApi: "hasMany",
type: "teams"
},
tournaments: {
jsonApi: "hasMany",
type: "tournaments"
}
});
// up to here //
let { data, errors, meta, links } = await jsonApi.find(
"team",
route.params.id,
{
include: "sport"
}
);
return { data };
},
Так что я думаю о размещениитот код, который я упомянул на другой странице.
ОБНОВЛЕНИЕ:
Я пытался сделать это, как сказал Дэвид в комментариях, но когда я импортировал его, он просто не работал.Он говорит, что он не определен.
Это мой пожирающий файл
import JsonApi from 'devour-client';
export default function ({ $axios, $auth }) {
const jsonApi = new JsonApi({ apiUrl: $axios.defaults.baseURL });
jsonApi.headers['Authorization'] = $auth.getToken('local');
jsonApi.define('team', {
name: '',
abbreviation: '',
sport: {
jsonApi: 'hasOne',
type: 'sports'
}
});
jsonApi.define('sport', {
name: '',
teams: {
jsonApi: 'hasMany',
type: 'teams'
},
tournaments: {
jsonApi: 'hasMany',
type: 'tournaments'
}
});
return jsonApi
}
И это мой текущий сценарий, где я использую этот
import jsonApi from '~/api/devour';
async asyncData({ $axios, $auth, jsonApi }) {
let { data, errors, meta, links } = await jsonApi.findAll('teams', {
include: 'sport'
});
return { data };
},