TypeError:无法读取未定义的属性“ db”

时间:2020-04-16 11:03:26

标签: javascript node.js mongodb

My code 我的操作与视频中的操作完全相同,但是每次发生此问题时,请提供帮助! 这是视频的链接:https://www.youtube.com/watch?v=ipkLgbtS0LU&list=PLsY8aWop1tAH2mtv7jSTt6zr5Sfpu1WrM&index=3

var express = require('express');
var bodyParser = require('body-parser')

var app = express();

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

app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json())

var MongoClient = require("mongodb").MongoClient
MongoClient.connect("mongodb://localhost:27017", {useNewUrlParser: true, useUnifiedTopology: true}, function(error, client){
    var blog = client.db("blog");
    console.log("DB connected");

    app.get('/', function(req, res){
        res.send("Hello world")
    });

    app.get("/admin/dashboard", function(req, res) {
        res.render("admin/dashboard");
    });

    app.get("/admin/posts", function(req, res) {
        res.render("admin/posts");
    });

    app.post("/do-post", function(req, res){
        blog.collection("posts").insertOne(req.body, function(error, document){
            res.send("Posted Successfully!")
        });
    });

    app.listen(3000, function() {
        console.log("Server Connected");
    })
}) ```

1 个答案:

答案 0 :(得分:1)

尝试一下:

var blog = client.collection("blog");
console.log("DB connected");

client.db不存在

实际上,您的“客户端”是您的数据库,因此您应该像这样将其重命名为db:

var MongoClient = require('mongodb').MongoClient;

MongoClient.connect('mongodb://localhost:27017/animals', function(err, db) {
  if (err) {
    throw err;
  }
  db.collection('mammals').find().toArray(function(err, result) {
    if (err) {
      throw err;
    }
    console.log(result);
  });
});

来源:https://expressjs.com/en/guide/database-integration.html#mongodb