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

时间:2020-08-31 03:47:27

标签: node.js mongodb express

我是新编码员,正在开发待办事项应用程序。我想将我的应用程序从VSC编辑器Terminal连接到mongoDB Atlas数据库。我使用Node.js(Express)和mongoDB Atlas。当我卸载Node.js并从头开始编写代码时,它可以正常工作,因为代码一切正常,但是第二天当我回到同一个项目并运行它时,它不再起作用。它显示一个错误。您可以在以下链接上检查此可怕的错误:https://prnt.sc/u8paeg

let express = require('express')
let mongodb = require('mongodb')

let app = express()
let db

let connectionString ='mongodb+srv://akhtarayaz:SpreadLoveEverywhere@cluster0.yfwfa.mongodb.net/Users?retryWrites=true&w=majority'
mongodb.connect(connectionString, {useNewUrlParser: true, useUnifiedTopology: true}, function(err, client){ 
  db = client.db()
  app.listen(3000)
  if (err) {
    throw err;
}  
})

app.use(express.urlencoded({extended: false}))

app.get('/', function(req, res){
db.collection('accounts').find().toArray(function(err, accounts){
  res.send(`<!DOCTYPE html>
  <html>
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Simple To-Do App</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
  </head>
  <body>
    <div class="container">
      <h1 class="display-4 text-center py-1">To-Do App</h1>
      
      <div class="jumbotron p-3 shadow-sm">
        <form action="/create-account" method="POST">
          <div class="d-flex align-items-center">
            <input name="account" autofocus autocomplete="off" class="form-control mr-3" type="text" style="flex: 1;">
            <button class="btn btn-primary">Add New Item</button>
          </div>
        </form>
      </div>
      
      <ul class="list-group pb-5">
        ${accounts.map(function(account){
          return `<li class="list-group-item list-group-item-action d-flex align-items-center justify-content-between">
          <span class="item-text">${account.text}</span>
          <div>
            <button class="edit-me btn btn-secondary btn-sm mr-1">Edit</button>
            <button class="delete-me btn btn-danger btn-sm">Delete</button>
          </div>
        </li>`
        }).join('')}
      </ul>
    </div>  
  
  </body>
  </html>
  `)  
})  
})

app.post('/create-account', function(req, res){
db.collection('accounts').insertOne({text: req.body.account}, function(){
    res.redirect('/')
})
})

0 个答案:

没有答案