首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AccountsJs TypeORM

AccountsJs TypeORM
EN

Stack Overflow用户
提问于 2020-02-19 21:14:50
回答 1查看 116关注 0票数 0

我对account和TypeORM有一点问题

我已经配置了一切,没有错误,但我似乎无法创建用户,我运行了变异,但它没有失败,它运行大约2毫秒,但当我转到DB (MongoDB地图集)时,我看不到用户集合,也没有创建用户。

下面是我的配置:

代码语言:javascript
复制
import { AccountsModule } from "@accounts/graphql-api";
import { AccountsServer } from "@accounts/server";
import { AccountsPassword } from "@accounts/password";
import AccountsTypeorm from "@accounts/typeorm";
import { Connection } from "typeorm";

export const setUpAccounts = async (connection: Connection) => {
  const db = new AccountsTypeorm({ connection, cache: 1000 });
  const password = new AccountsPassword({
    twoFactor: {
      appName: "Events"
    }
  });

  const accountsServer = new AccountsServer(
    {
      db,
      tokenSecret: "terrible secret",
      siteUrl: "http://localhost:3000"
    },
    {
      password
    }
  );

  const accounts = AccountsModule.forRoot({
    accountsServer,
    headerName: "x-events-token"
  });

  return accounts;
};

索引文件:

代码语言:javascript
复制
require("dotenv").config();
import "reflect-metadata";

import express, { Application } from "express";
import { ApolloServer, makeExecutableSchema } from "apollo-server-express";
import { mergeTypeDefs } from "graphql-toolkit";
import { buildTypeDefsAndResolvers } from "type-graphql";

import { resolvers } from "./graphql";
import { connectDatabase } from "./db";
import { setUpAccounts } from "./lib/accounts";
import { CategoryResolver } from "./modules/Category/CategoryResolver";

const port = process.env.PORT;

const corsOptions = {
  origin: "http://localhost:3000",
  credentials: true
};
const mount = async (app: Application): Promise<void> => {
  const connection = await connectDatabase();

  const accounts = await setUpAccounts(connection);

  const schema = await buildTypeDefsAndResolvers({
    resolvers: [resolvers, CategoryResolver, accounts.resolvers]
  });

  const server = new ApolloServer({
    schema: makeExecutableSchema({
      typeDefs: mergeTypeDefs([accounts.typeDefs, schema.typeDefs]),
      resolvers: schema.resolvers,
      schemaDirectives: {
        ...accounts.schemaDirectives
      }
    }),
    context: accounts.context,
    playground: true
  });

  server.applyMiddleware({
    app: app,
    path: "/graphql",
    cors: corsOptions
  });

  app.listen(port, () => {
    console.log(`[ app ]: running on http://localhost:${port}`);
  });
};

mount(express());

connectDatabase:

代码语言:javascript
复制
import { createConnection, Connection } from "typeorm";
import path from "path";

const user = process.env.DB_USER;
const userPassword = process.env.DB_USER_PASSWORD;
const cluster = process.env.DB_CLUSTER;

const uri = `mongodb+srv://${user}:${userPassword}@${cluster}.mongodb.net/`;

export const connectDatabase = async (): Promise<Connection> => {
  const connection = await createConnection({
    url: uri,
    type: "mongodb",
    database: "main",
    w: "majority",
    useNewUrlParser: true,
    useUnifiedTopology: true,
    logger: "advanced-console",
    logging: "all",
    entities: [
      path.join(__dirname, "/../entities/**/*.*"),
      ...require("@accounts/typeorm").entities
    ]
  });

  console.log(connection.options.entities);

  return connection;
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-20 00:35:08

Nvm我通过将accounts.resolversbuildTypeDefsAndResolvers移到makeExecutableSchema修复了这个问题

代码语言:javascript
复制
schema: makeExecutableSchema({
    typeDefs: mergeTypeDefs([accounts.typeDefs, schema.typeDefs]),
    resolvers: mergeResolvers([schema.resolvers, accounts.resolvers]),
    schemaDirectives: {
      ...accounts.schemaDirectives
    }
})

现在有效:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60301233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档