#apollo #apollo-server #meteor-accounts
Вопрос:
Я пытаюсь интегрировать account-js с apollo-сервером. После того, как я написал все свои коды, я увидел все автоматически сгенерированные мутации и запросы в схеме. Но если я хочу создать нового пользователя, распознаватель CreateUser возвращает:
{
"data": {
"createUser": {
"userId": null,
"loginResult": null
}
}
}
Он создает пользователя в БД, но ничего не возвращает. Я видел запись в бд. И я попытался войти в систему с этим пользователем, но получил «сообщение»: «У пользователя нет установленного пароля». Я действительно не понимаю, в чем проблема, потому что я следил за статьей, которая находится в блоге apollo.
Ссылка: https://www.apollographql.com/blog/email-password-authentication-with-accounts-js-and-apollo-server/
Также я хотел создать пользователя со строковым идентификатором вместо идентификатора объекта. Учетные записи-документ js говорит, что я должен передать опцию «convertUserIdToMongoObjectId: false». Я сделал это, но это тоже не сработало. Я действительно застрял.
Вот моя настройка:
const accountsJsInıtializer = ({ mongoConnection }) => {
const accountsPassword = new AccountsPassword()
const accountsMongo = new Mongo(mongoConnection,{
convertUserIdToMongoObjectId: false,
dateProvider: (date) => date ? date.toISOString() : new Date().toISOString()
})
const accountsServer = new AccountsServer(
{
db: accountsMongo,
tokenSecret: 'secret-token',
},
{
password: accountsPassword
}
)
return AccountsModule.forRoot({ accountsServer })
}
const apolloLoader = ({ expressApp, mongoConnection }) => {
const accountsGraphQL = accountsJsInıtializer({ mongoConnection })
const schema = makeExecutableSchema({
typeDefs: mergeTypeDefs([typeDefs, accountsGraphQL.typeDefs]),
resolvers: mergeResolvers([accountsGraphQL.resolvers,resolvers]),
schemaDirectives: {
...accountsGraphQL.schemaDirectives
}
})
const schemaMiddleware = applyMiddleware(schema)
const apollo = new ApolloServer({
schema: schemaMiddleware,
context: accountsGraphQL.context,
})
apollo.applyMiddleware({ app: expressApp, path: '/graphql' })
return apollo
}