- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我是一名前端开发人员,试图在新的 Next 项目中拓展自己的视野,第一次学习 Node、Mongo 和 GraphQL 的服务器端。 Apollo 对我来说是最简单的入门方式,因为我已经在之前的项目中使用过客户端 Apollo。
我一直在关注official docs ,我在那里了解到 apollo-datasource-mongodb (这似乎是将我的 Apollo 服务器直接插入本地 Mongo 数据库的最佳方法。不幸的是,似乎没有这个包的任何示例存储库供我作弊,所以我只能蒙混过关。
我通过 mongod
在本地运行 mongo,并且可以通过 mongo shell 成功执行 find()
查询,因此我知道数据库本身状况良好,并且包含近600,000 条记录(我正在使用相当大的数据集)。
我还可以通过 localhost:4000
访问 Apollo Playground,因此我知道服务器正在正常启动并连接到数据库(以及我后来设法解决的适当架构提示/错误)。
这是我在 Playground 中使用的查询:
{
item(id: 22298006) {
title
}
}
这是我得到的回复:
{
"errors": [
{
"message": "Topology is closed, please connect",
"locations": [
{
"line": 2,
"column": 3
}
],
"path": [
"item"
],
"extensions": {
"code": "INTERNAL_SERVER_ERROR",
"exception": {
"name": "MongoError",
"stacktrace": [
"MongoError: Topology is closed, please connect",
...
]
}
}
}
],
"data": {
"item": null
}
}
我已在下面附加了我的服务器文件。我怀疑这可能是某种超时错误,就像需要很长时间才能梳理所有 600k 记录才能找到具有我提供的 ID 的记录?当我从 MongoClient 定义中删除 useUnifiedTopology: true
时,我收到了不同的错误:
UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
但我自己没有使用异步或 promise 。这让我思考——我应该这样做吗?在等待 findOneById()
返回时,我是否可以以某种方式暂停该过程(如果这确实是问题所在)?
顺便说一句,我至少看到过一个示例代码库,其中 MongoClient 在其自身中包含了一个服务器声明(也来自 'mongodb'
npm 包)。实现类似的东西是否可以让我不必每次想要处理我的项目时都用 mongod
阻塞终端窗口?
非常感谢您抽出时间!如果我能让这个工作成功,我肯定会在 Medium 上写一篇完整的文章,或者为其他希望将 MongoClient 与 ApolloServer 配对以获得快速而简单的 API 的人铺平道路。
index.js
const { MongoClient } = require('mongodb');
const assert = require('assert');
const { ApolloServer, gql } = require('apollo-server');
const { MongoDataSource } = require('apollo-datasource-mongodb');
const client = new MongoClient('mongodb://localhost:27017/projectdb', { useNewUrlParser: true, useUnifiedTopology: true }, (err) => {
err && console.log(err);
});
client.connect((err) => {
assert.equal(null, err);
client.close();
});
const db = client.db();
class Items extends MongoDataSource {
getItem(id) {
return this.findOneById(id);
}
}
const typeDefs = gql`
type Item {
id: Int!
title: String!
}
type Query {
item(id: Int!): Item
}
`;
const resolvers = {
Query: {
item: (_, { id }, { dataSources }) => dataSources.items.getItem(id),
}
}
const server = new ApolloServer({
typeDefs,
resolvers,
dataSources: () => ({
items: new Items(db.collection('items')),
}),
});
server.listen().then(({ url }) => {
console.log(`Server ready at ${ url }`);
});
最佳答案
实际上,还有一件事可能导致此问题,因为我也遇到了同样的错误“拓扑已关闭,请连接”。
问题是,如果您有动态 IP 地址,那么在 MongoDB atlas 中您应该尝试允许所有 IP 地址。
添加IP地址:0.0.0.0/0
将这个IP地址列入允许所有的白名单后,我所有的问题都得到了解决。
动态IP 0.0.0.0/0
的图像:
关于node.js - MongoError : Topology is closed, 请连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59657450/
我正在使用 Groovy 进行一个项目,我想采用一个员工数组,这样在数组中没有经理跟随他们的下属。原因是我需要将人员添加到数据库中,我不希望分两次完成。 所以,我基本上有: 12
要缓存的数据: 100 Gb 数据 大小为 500-5000 字节的对象 平均每分钟更新/插入 1000 个对象(峰值 5000) 需要对生产和测试中的 Coherence 拓扑提出建议(与备份一起分
在所有边都处于错误方向的图上反转拓扑排序的结果是否会产生有效的拓扑顺序,就好像边在排序之前被反转一样? a -> b a -> c b -> d c -> d 可以给出 a b c d 的拓扑排序。反
使用JTS,如何找到多边形边界上距外部点最近的点? 最佳答案 查看 DistanceOp 。它返回一个坐标数组: 坐标[] pts = DistanceOp.closestPoints(poly, O
我正在尝试使用充当 Kafka 消费者的 Storm 喷口将我的数据从 Kafka 主题发送到 HBase,并将数据发送到 HBase 我在 Storm 拓扑中面临异常.... java.lang.R
我已经配置了我的机器 zookeeper、nimbus、supervisor 正常运行并且我的拓扑在 LocalCluster 中工作 LocalCluster cluster = new Local
我正在构建一个 REST API,但每次加载我的网站时,我都会收到 MongoError:拓扑已损坏。有人可以帮我解决这个问题吗?我感觉异步运行有问题。 const client = new Mong
我使用一些带有 zb 堆栈的 xbee (s2) 模块进行网状网络评估。因此,必须创建多跳环境。问题是,固件自己处理关联,并且没有像 api 提供的那样更深入地了解堆栈。为了强制数据的路径,而不干扰路
我有一个在 Node.js 中使用 Restify 和 Mongoose 构建的 REST 服务,以及一个包含大约 30.000 个常规大小文档的集合的 mongoDB。我的 Node 服务通过 pm
当我尝试创建时出现此错误: Error (E_UNKNOWN) :: Encountered an unexpected error MongoError: topology was destroye
我正在使用 storm jar 类将拓扑提交给 `nimbus'。它在本地工作正常但在远程集群上它说它无法加载主类。下面是错误 stderr: SLF4J: Class path contains m
当我尝试创建此错误时: Error (E_UNKNOWN) :: Encountered an unexpected error MongoError: topology was destroyed
我有一个内置在 node.js 中的 REST 服务,带有 Restify 和 Mongoose,还有一个 mongoDB,其中包含大约 30.000 个常规大小的文档。我的 Node 服务通过 pm
我正在寻找一种方法来设置“cassandra-topology.properties”的路径,以便 Cassandra 可以从给定路径获取此文件。有什么办法可以做到这一点吗? 谢谢,巴蒂亚 最佳答案
在尝试提交 Storm 拓扑时, ./storm jar /home/winoria1/Desktop/stormtopology.jar com.storm.StormTopology 我收到以下错
Apache Storm 如何设置新拓扑和存在一次的日志级别? 在java中我写道: import org.slf4j.Logger; import org.slf4j.LoggerFactory;
在同一台计算机上有两个节点的本地(测试)设置中(使用端口范围 47500..47501 的静态 IP 配置),“第二个”节点将不会加入集群;它发出 TcpDiscoveryJoinRequestMes
我是一名前端开发人员,试图在新的 Next 项目中拓展自己的视野,第一次学习 Node、Mongo 和 GraphQL 的服务器端。 Apollo 对我来说是最简单的入门方式,因为我已经在之前的项目中
我已将我的 MongoDB 数据库配置为单节点副本集。我可以通过 api 访问它(向它写入数据),也可以从 shell 访问它: rs0:PRIMARY> rs.status() { "set
我目前在 Windows 机器上使用 Netbeans 开发拓扑。当我以本地模式部署时: LocalCluster 集群 = new LocalCluster(); cluster.submitTop
我是一名优秀的程序员,十分优秀!