在第一个响应后使用Node.js,MongoDB和Express提供JSON响应时出错

时间:2019-03-05 18:45:25

标签: javascript node.js mongodb express

我正在尝试使用Node.js express和MongoDB来制作简单的Restful API。我正在将Node.js-MongoDB驱动程序与Express框架一起使用

const MongoClient = require("mongodb").MongoClient
const url = "mongodb://localhost:27017/"
const dbName = "PractiseDB"
const client = new MongoClient(url, {useNewUrlParser:true})
const port = process.env.PORT || 8000

const express = require('express');
const app = express()

app.get('/', (req, res) => {
  client.connect((err) => {
    if (err) throw err
    const collRef =  client.db(dbName).collection('newCollection')
    console.log("Connected ... ")
    collRef.find({}).toArray((err, result) => {
      res.set('Content-Type', 'text/json')
      res.send(result)
      client.close(() => {
        console.log("DB Close...")
      })
    })
  })
})

app.listen(port, () => {
  console.log(`App running on port ${port}`)
})

当我运行上面的代码片段时,在第一个响应上我得到了JSON数据,但是在第一个响应后我在控制台上得到了这个数据,

  

不支持选项[服务器],选项[caseTranslate]是   不支持

我缺少什么,或者还有其他方式可以提供JSON吗?

1 个答案:

答案 0 :(得分:0)

您在第一个请求后关闭mongo客户端。 这就是您得到错误的原因。

解决。 选项1: 您可以在“ /”路由内移动创建新mongo客户端的代码。

选项2: 不要关闭路由“ /”内的mongo客户。保持mongo客户端连接处于活动状态,直到关闭服务器为止。