Итак, я работаю над сервером graphql и пытаюсь выполнить внешний вызов async / await на сервер facebook.
Проблема в том, что вся эта информация возвращается, но не сохраняется в db. Как я узнаю, что он возвращается? если я использую findOne
вместо findOneAndUpdate
, я могу console.log
всю информацию и видеть ее успешно, но как только я переключаюсь обратно, я даже не получаю сообщение об ошибке.
Я посмотрел пн goose docs и попытался применить findOneAndUpdate
правильно, но он просто смеется надо мной без ошибок, он просто ничего не делает.
В любом случае вот мой код, если кто-нибудь может дать мне совет, он бы действительно будут оценены.
Первый набор - это код с использованием findOne
, который, как я знаю, работает на 100%, но не сохраняет и не обновляет do c.
Второй - когда я пытаюсь чтобы сделать это с помощью FindOneAndUpdate
.
getFacebookPageID: {
type: FacebookType,
description: 'Gets all the content we want from facebook once a user has granted permissions',
args: {
id: { type: GraphQLString },
accessToken: { type: GraphQLString },
facebook: { type: InputFacebookType }
},
resolve: (parent, args) => User.findOne({ _id: args.id }, async (err, docs) => {
console.log('next step is getcontent');
// const clientId = process.env.FACEBOOK_ID;
// const reDirectFBUri = process.env.FACEBOOK_ID_URI;
const { accessToken } = docs.tokens.find((item) => item.kind === 'facebook');
const userId = docs.facebookId;
console.log(userId);
const getFBaccounts = `https://graph.facebook.com/${userId}/accounts?access_token=${accessToken}`;
let pages = null;
await axios.get(getFBaccounts)
.then((response) => {
pages = response.data.data;
// this above line is all the fb pages user has give us access to
console.log('pages', response.data.data);
const query = { _id: args.id, };
console.log('This should be object id', query);
User.updateOne(query, {
pages,
}, (err, docs) => {
console.log('Any errors here are problems with saving!', err, docs);
});
})
.catch((err) => console.log(err));
return FacebookType;
}
),
},
Я также пробовал это ниже, и это просто даже не будет ничего записывать в консоль. Это я пытаюсь использовать findOneAndUpdate
getFacebookPageID: {
type: FacebookType,
description: 'Gets all the content we want from facebook once a user has granted permissions',
args: {
id: { type: GraphQLString },
accessToken: { type: GraphQLString },
facebook: { type: InputFacebookType }
},
resolve: (parent, args) => User.findOneAndUpdate({ _id: args.id },{ pages: async (err, docs) => {
console.log('next step is getcontent');
const { accessToken } = docs.tokens.find((item) => item.kind === 'facebook');
const userId = docs.facebookId;
console.log(userId);
const getFBaccounts = `https://graph.facebook.com/${userId}/accounts?access_token=${accessToken}`;
let pages = null;
await axios.get(getFBaccounts)
.then((response) => {
pages = response.data.data;
console.log('pages', response.data.data);
})
.catch((err) => console.log(err));
return FacebookType;
}
},
{new: true}
),
},