【发布时间】:2020-04-16 09:04:31
【问题描述】:
所以,我有一个正在启动的应用程序,我将使用 Apollo 使用 MERNG 堆栈。
我通过阅读博客文章和观看视频进行研究,以便更好地了解 GraphQL 的工作原理(从未真正使用过它)。在某个时候,我开始看到 db 模型之间的关系示例,例如“来自用户的帖子”。
例如:
import { model, Schema } from 'mongoose';
const postSchema = new Schema(
{
title: String,
createdBy {
type: Schema.Types.ObjectId,
ref: 'User',
}
};
export default model('Post', postSchema);
import { model, Schema } from 'mongoose';
const userSchema = new Schema(
{
email: String,
password: String,
posts [{
type: Schema.Types.ObjectId,
ref: 'Post',
}]
}
export default model('User', userSchema);
我想知道在进行查询以检索帖子中的用户数据时,哪种方法是“填充”相关字段的最佳方法。
我看到有两种选择:
1 - 使用 Mongoose 自带的填充。这样做的缺点是,即使我没有在 GraphQL 查询中要求它,它也会始终填充该字段。 2 - 使用将使用 findById 检索相关对象然后手动分配它的函数。这不存在填充问题,因为它只会在需要该字段时获取它,而是增加了我必须查询数据库的次数。
我了解利弊,但我不确定哪个是最好的解决方案。我还有其他选择吗?
【问题讨论】:
标签: mongodb mongoose graphql apollo-server