Apollo / Graphql,Postgres-为什么此查询返回null?

时间:2019-04-04 21:23:21

标签: node.js postgresql graphql apollo

enter image description here enter image description here我正在将apollo-graphql与postgres一起使用,现在我希望能够将后端数据提取到apollo客户端中。这是我对graphql的首次尝试,我做了以下工作: i。)在localhost:4000上创建了apollo-graphql服务器,该服务器还具有apollo graphql游乐场 ii。)为我的服务器定义typeDefs和解析器 iii。)在typeDefs中->定义了我的模式 iv。)在解析器中->刚刚添加了findAll查询(同时尝试了属性和无参数):

WebCrawler.open_link

v。)然后,我将使用续集ORM定义的postgres dbIndex添加到服务器文件(在上面的步骤iv中用于查询我的数据库)

vi。)在我的dbIndex文件中,我使用环境变量对db进行身份验证,获取连接消息,创建db模式并导出它。

完成所有这6个步骤后,在阿波罗游乐场,我看到了null。

我的文件列表如下:

Server.js:

    Query: {
    me: () => account.findAll({attributes: ['user_id', 'username', 'email']})
}

dbIndex.js

const {ApolloServer} = require('apollo-server');

const typeDefs = require('./schema');

const {account} = require('../database/dbIndex.js');

const resolvers = {
    Query: {
        me: () => account.findAll()
    }
};

const server = new ApolloServer({
    typeDefs,
    resolvers
});

server.listen().then(({url}) => {
    console.log(`Server ready at ${url}`);
});

schema.js

const Sequelize = require('sequelize');

require('dotenv').config();

const sortDb = new Sequelize(
    `${process.env.DATABASE}`,
    process.env.DATABASE_USER,
    process.env.DATABASE_PASSWORD,
    {
      dialect: 'postgres',
    },
);

sortDb
    .authenticate()
    .then(() => {
        console.log('Connected to DB');
    })
    .catch((err) => {
        console.error('Unable to connect to DB', err);
    });

const account = sortDb.define('account', {
    user_id: {type: Sequelize.INTEGER},
    username: {type: Sequelize.STRING},
    email: {type: Sequelize.STRING}
});

module.exports.account = account;

请帮助!提前致谢!

1 个答案:

答案 0 :(得分:1)

sequelize中的findAll返回一个行数组,请尝试使用具有特定查询的findOne或findById

它返回null,因为可以在数组中解析User类型的属性。