我正在将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;
请帮助!提前致谢!
答案 0 :(得分:1)
sequelize中的findAll返回一个行数组,请尝试使用具有特定查询的findOne或findById
它返回null,因为可以在数组中解析User类型的属性。