目前我正在使用Apollo / GraphQL / Node.js / Sequelize来构建我的后端服务器,我的服务器代码如下所示,在那里我可以使用req.user来获取当前的登录用户
app.use(
'/graphql',
bodyParser.json(),
graphqlExpress(req => ({
schema,
context: {
models,
user: req.user,
},
})),
);
现在我有两个模型User和Recipe,关联规则是Recipe属于User,所以在Recipe模式中我可以使用UserId知道哪个用户创建了这个模式,Recipe模式是
type Recipe {
id: Int!
authorName: String!
authorFbPage: String @virtual
perfumeName: String!
message: String
UserId: Int
}
type Query {
allRecipe: [Recipe]
meRecipe: [Recipe]
AvailableWatchRecipe: [Recipe]
}
我的问题是在meRecipe部分,这个查询应该能够显示登录用户创建的食谱,解析器代码是
meRecipe: async (parent, args, { models, user }) => {
if (user) {
console.log(user.id);
console.log(user.username);
return models.Recipe.find({ where: { UserId: user.id } })
.then((result) => { return result });
}
return null;
},
你可以看到我也使用console.log来检查我是否可以获取当前用户信息,它实际上可以,所以我真的很困惑为什么当我在GraphQL服务器中运行这个查询时,它总是显示{{1 }}。 我检查了这些资源: https://github.com/brysgo/graphql-bookshelf/issues/10 和 GraphQL Expected Iterable, but did not find one for field xxx.yyy 但是没有一个适合我的情况,任何人都可以给我一些建议,谢谢!
答案 0 :(得分:1)
而不是使用:
models.Recipe.find
使用
models.Recipe.findAll // this will return single result in array