mongo db node.js some error with 'db' being undefined

你说的曾经没有我的故事 提交于 2021-01-29 10:36:15

问题


i am a newbiew and following a yt video https://www.youtube.com/watch?v=kwPWwczwi6c&list=PLsY8aWop1tAHigCqvxZ61XK3a8I509VRx&index=2 after creating a server.js file and running nodemon server.js file entered below

var express = require("express");
var app = express();

var formidable = require("express-formidable");
app.use(formidable());

var mongodb = require("mongodb");
var mongoClient = mongodb.MongoClient;
var ObjectId = mongodb.ObjectId;

var http = require("http").createServer(app);
var bcrypt = require("bcrypt");
var fileSystem = require("fs");

var jwt = require("jsonwebtoken");
var accessTokenSecret = "myAccessTokenSecret1";

app.use("/public", express.static(__dirname + "/public"));
app.set("view engine", "ejs");

var socketIO = require("socket.io")(http);
var socketID = "";
var users = [];

var mainURL = "http://localhost:3000";

socketIO.on("connection", function (socket) {
  console.log("User connected", socket.id);
  socketID = socket.id;
});

http.listen(3000, function () {
  console.log("Server started.");
  mongoClient.connect("mongodb://localhost:27017", function (error, client) {
    var database = client.db("Social_De_Test");
    console.log("Database connected.");
    app.get("/signup", function (request, result) {
      result.render("signup");
    });
  });
});

, i get an error

[nodemon] 2.0.4
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json  
[nodemon] starting `node server.js`
Server started.
(node:5776) DeprecationWarning: current Server Discovery and Monitoring engine is deprecated, and will be removed in a future version. To use the new Server Discover and Monitoring engine, pass option { useUnifiedTopology: true } to the 
MongoClient constructor.
(Use `node --trace-deprecation ...` to show where the warning was created)
F:\Project\Workspace\heroku\node_modules\mongodb\lib\utils.js:668
          throw error;
          ^

TypeError: Cannot read property 'db' of undefined
    at F:\Project\Workspace\heroku\server.js:35:27
    at F:\Project\Workspace\heroku\node_modules\mongodb\lib\utils.js:665:9
    at F:\Project\Workspace\heroku\node_modules\mongodb\lib\mongo_client.js:224:23
    at connectCallback (F:\Project\Workspace\heroku\node_modules\mongodb\lib\operations\connect.js:366:5)
    at F:\Project\Workspace\heroku\node_modules\mongodb\lib\operations\connect.js:433:14
    at Server.<anonymous> (F:\Project\Workspace\heroku\node_modules\mongodb\lib\topologies\server.js:230:11)
    at Object.onceWrapper (events.js:421:26)
    at Server.emit (events.js:314:20)
    at Pool.<anonymous> (F:\Project\Workspace\heroku\node_modules\mongodb\lib\core\topologies\server.js:436:21)
    at Pool.emit (events.js:314:20)
[nodemon] app crashed - waiting for file changes before starting...

filler for It looks like your post is mostly code; please add some more details.filler for It looks like your post is mostly code; please add some more details.filler for It looks like your post is mostly code; please add some more details.filler for It looks like your post is mostly code; please add some more details.filler for It looks like your post is mostly code; please add some more details.filler for It looks like your post is mostly code; please add some more details.filler for It looks like your post is mostly code; please add some more details.filler for It looks like your post is mostly code; please add some more details.filler for It looks like your post is mostly code; please add some more details.filler for It looks like your post is mostly code; please add some more details.filler for It looks like your post is mostly code; please add some more details.


回答1:


You are making a asyn call to DB. Just make sure you have created a promise and attach to the DB here. I have used mongoose as ODM here and added a snippet in case you didn't find any help

global.mongoose = require('mongoose');

mongoose.Promise = global.Promise;

// Connecting to the database
mongoose
  .connect(dbConfig[envConfig.current_env], {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useFindAndModify : false
  })
  .then(() => {
    console.log('Successfully connected to the database');
  })
  .catch((err) => {
    console.log('Could not connect to the database. Exiting now...', err);
    process.exit();
  });



回答2:


Seems like this line:

var database = client.db("Social_De_Test");

Should replace client to mongoClient:

var database = mongoClient.db("Social_De_Test");


来源:https://stackoverflow.com/questions/64198421/mongo-db-node-js-some-error-with-db-being-undefined

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!