He estado siguiendo un curso de Udemy para aprender mongodb, y dado que el tutor usa un ide basado en la nube (cloud9), también he decidido usar el mismo. Sin embargo, dado que cloud9 ahora requiere una cuenta de AWS, pensé en usar CodeSandbox. Pero no puedo entender cómo iniciar el servidor Mongo en él. Después de instalar tanto Mongod como MongoDB, si intento ejecutar app.js, me da un error:

    (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.

Si trato de correr mongod, dice

mongod: command not found

Este es mi app.js

var express = require("express");
var app = express();
var bodyParser = require("body-parser");
var mongoose = require("mongoose");

mongoose.connect("mongodb://localhost/yelp_camp");

Intenté instalar mongo y mongod usando la interfaz de usuario de codesandbox, usando la terminal (npm install) y haciendo lo que dicen los documentos de cloud9 (sé que no debería funcionar, pero no puedo encontrar ninguna documentación de Codesandbox)

¿Es posible hacer esto en codesandbox o tendré que usar MongoAtlas? ¡Gracias por adelantado!

0
user12416557 8 feb. 2020 a las 18:24

2 respuestas

La mejor respuesta

Creo que no hay alojamiento de bases de datos en CodeSandbox, por lo que debe usar un servicio externo.

Algunos servicios que puede usar:

Ejemplo de MLab

  1. Configurar una base de datos en MLab
  2. Copie y pegue la cadena de conexión

Una función de ejemplo simple sería:

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);
  }
};

Aquí está la documentación de CodeSandbox.

1
Tamas Szoke 8 feb. 2020 a las 16:40

CodeSandbox tiene un iniciador para conectarse a MongoDB alojado como Atlas: consulte https: // codesandbox .io / s / mongodb-database-example-starter-v3ker

0
Gareth 19 feb. 2020 a las 09:40