如何在codesandbox中使用MongoDB?
How to use MongoDB with codesandbox?
我一直在学习 Udemy 课程来学习 mongodb,由于导师使用基于云的 ide (cloud9),我也 decided 使用相同。但是,由于 cloud9 现在需要 AWS 帐户,我想到了使用 CodeSandbox。但我不知道如何在其上启动 Mongo 服务器。
安装 Mongod 和 MongoDB 后,如果我尝试 运行 app.js,它会给我错误:
(node:1297) UnhandledPromiseRejectionWarning: MongoNetworkError: failed to connect to server [localhost:27017] on firstconnect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]
at Pool.<anonymous> (/sandbox/node_modules/mongodb/lib/core/topologies/server.js:433:11)
at Pool.emit (events.js:198:13)
at createConnection (/sandbox/node_modules/mongodb/lib/core/connection/pool.js:577:14)
at connect (/sandbox/node_modules/mongodb/lib/core/connection/pool.js:1007:11)
at makeConnection (/sandbox/node_modules/mongodb/lib/core/connection/connect.js:31:7)
at callback (/sandbox/node_modules/mongodb/lib/core/connection/connect.js:247:5)
at Socket.err (/sandbox/node_modules/mongodb/lib/core/connection/connect.js:276:7)
at Object.onceWrapper (events.js:286:20)
at Socket.emit (events.js:198:13)
at emitErrorNT (internal/streams/destroy.js:91:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
at process._tickCallback (internal/process/next_tick.js:63:19)
(node:1297) UnhandledPromiseRejectionWarning: Unhandled promise rejection. Thiserror originated either by throwing inside of an async function without a catchblock, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:1297) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
如果我尝试 运行 mongod,它会显示
mongod: command not found
这是我的app.js
var express = require("express");
var app = express();
var bodyParser = require("body-parser");
var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/yelp_camp");
我已经尝试使用 codesandbox 的 UI 安装 mongo 和 mongod,使用终端(npm install),并按照 cloud9 的文档所说的进行操作(我知道它不应该工作但是我找不到任何 Codesandbox 文档)
是否可以在 codesandbox 中执行此操作,还是我必须使用 MongoAtlas?
提前致谢!
我认为 CodeSandbox 上没有数据库托管,因此您应该使用外部服务。
您可以使用的一些服务:
- MLab(免费计划)
- ObjectRocket(免费试用)
- Compose(免费试用)
- MongoAtlas
MLab 示例
- 在 MLab 建立数据库
- 复制并粘贴连接字符串
一个简单的示例函数是:
let initMongo = async () => {
try {
await mongoose.connect(
"mongodb://<dbuser>:<dbpassword>@ds123456.mlab.com:49878/testdatabase",
{
useNewUrlParser: true,
useUnifiedTopology: true
}
);
return console.log("Database connected!");
} catch (e) {
return console.log("Database error!", e.message);
}
};
这里是 CodeSandbox 的 documentation。
CodeSandbox 有一个用于连接托管 MongoDB 的启动器,例如 Atlas - 请参阅 https://codesandbox.io/s/mongodb-database-example-starter-v3ker
我一直在学习 Udemy 课程来学习 mongodb,由于导师使用基于云的 ide (cloud9),我也 decided 使用相同。但是,由于 cloud9 现在需要 AWS 帐户,我想到了使用 CodeSandbox。但我不知道如何在其上启动 Mongo 服务器。 安装 Mongod 和 MongoDB 后,如果我尝试 运行 app.js,它会给我错误:
(node:1297) UnhandledPromiseRejectionWarning: MongoNetworkError: failed to connect to server [localhost:27017] on firstconnect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]
at Pool.<anonymous> (/sandbox/node_modules/mongodb/lib/core/topologies/server.js:433:11)
at Pool.emit (events.js:198:13)
at createConnection (/sandbox/node_modules/mongodb/lib/core/connection/pool.js:577:14)
at connect (/sandbox/node_modules/mongodb/lib/core/connection/pool.js:1007:11)
at makeConnection (/sandbox/node_modules/mongodb/lib/core/connection/connect.js:31:7)
at callback (/sandbox/node_modules/mongodb/lib/core/connection/connect.js:247:5)
at Socket.err (/sandbox/node_modules/mongodb/lib/core/connection/connect.js:276:7)
at Object.onceWrapper (events.js:286:20)
at Socket.emit (events.js:198:13)
at emitErrorNT (internal/streams/destroy.js:91:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
at process._tickCallback (internal/process/next_tick.js:63:19)
(node:1297) UnhandledPromiseRejectionWarning: Unhandled promise rejection. Thiserror originated either by throwing inside of an async function without a catchblock, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:1297) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
如果我尝试 运行 mongod,它会显示
mongod: command not found
这是我的app.js
var express = require("express");
var app = express();
var bodyParser = require("body-parser");
var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/yelp_camp");
我已经尝试使用 codesandbox 的 UI 安装 mongo 和 mongod,使用终端(npm install),并按照 cloud9 的文档所说的进行操作(我知道它不应该工作但是我找不到任何 Codesandbox 文档)
是否可以在 codesandbox 中执行此操作,还是我必须使用 MongoAtlas? 提前致谢!
我认为 CodeSandbox 上没有数据库托管,因此您应该使用外部服务。
您可以使用的一些服务:
- MLab(免费计划)
- ObjectRocket(免费试用)
- Compose(免费试用)
- MongoAtlas
MLab 示例
- 在 MLab 建立数据库
- 复制并粘贴连接字符串
一个简单的示例函数是:
let initMongo = async () => {
try {
await mongoose.connect(
"mongodb://<dbuser>:<dbpassword>@ds123456.mlab.com:49878/testdatabase",
{
useNewUrlParser: true,
useUnifiedTopology: true
}
);
return console.log("Database connected!");
} catch (e) {
return console.log("Database error!", e.message);
}
};
这里是 CodeSandbox 的 documentation。
CodeSandbox 有一个用于连接托管 MongoDB 的启动器,例如 Atlas - 请参阅 https://codesandbox.io/s/mongodb-database-example-starter-v3ker