javascript - 使用 MongoDB 中的 GraphQL 按 ID 查找对象
问题描述
GraphQL API
我一直在尝试设置一个Next.js
连接到MongoDB
. 问题是:我可以使用什么功能来代替.findOne()
过滤掉特定对象,而无需移动到服务器(节点)环境?
这是示例:
import { ApolloServer, gql } from 'apollo-server-micro'
import { makeExecutableSchema } from 'graphql-tools'
import { MongoClient } from 'mongodb'
const typeDefs = gql`
type user {
_id: ID!,
firstname: String!,
lastname: String!,
links: [String!],
},
type Query {
user(_id: ID): user!
}
`
我可以在这里使用什么来通过 id 过滤特定对象而不移动到 Node 环境?
const resolvers = {
Query: {
user(_parent, _args, _context, _info) {
return _context.db
.collection('userdata')
.findOne()
},
},
}
应用程序的其余部分:
const schema = makeExecutableSchema({
typeDefs,
resolvers,
})
let db;
const apolloServer = new ApolloServer({
schema,
context: async () => {
if (!db) {
try {
const dbClient = new MongoClient(process.env.DB_KEY, {
useNewUrlParser: true,
useUnifiedTopology: true,
})
if (!dbClient.isConnected()) await dbClient.connect()
db = dbClient.db('*****')
} catch (e) {
console.log(e)
}
}
return { db }
},
})
export const config = {
api: {
bodyParser: false,
},
}
export default apolloServer.createHandler({ path: '/api/graphql' })
解决方案
推荐阅读
- java - 在 Java 中使用 .equals()、.isEmpty() 和 .length() 检查空字符串
- amazon-web-services - S3 | 对存储桶应用加密但排除其中的文件夹
- html - Content.jsp 显示在一个小的左上角区域,没有充满白色背景的页面。如何设置 CSS?
- angular - 为什么我得到标志“?” 在 URL 的开头并在导航绝对路径时重新启动应用程序?
- php - 在类别页面上显示数量 Magento 2
- tensorflow - RNN 使用均方误差不收敛
- laravel - Laravel 无法使用已软删除用户的 Token
- multithreading - 如何将多线程应用于 Bio::SeqIO 翻译代码(Bioperl)?
- github - 使用 GraphQL [Javascript] 从 Github 存储库获取图像
- linux - 通过 CGI 执行 bash 脚本