Node.js 节点获取请求显示空数组

Node.js 节点获取请求显示空数组,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我在mongoDB上收集了一组数据。当我试图在我的节点代码中发出get请求来发送数据以便我可以看到它实际上正在被get时,显示的只是一个空数组 Server.js代码: const app = express() const mongoose = require("mongoose") const Post = require("./models/post") //connect to mongoose mongoose.connect( &qu

我在mongoDB上收集了一组数据。当我试图在我的节点代码中发出get请求来发送数据以便我可以看到它实际上正在被get时,显示的只是一个空数组

Server.js代码:

const app = express()
const mongoose = require("mongoose")
const Post = require("./models/post")

//connect to mongoose
mongoose.connect(
    "mongodb+srv://<user>:<pass>@<mongohost>/posts?retryWrites=true&w=majority",
    { useUnifiedTopology: true, useNewUrlParser: true},
    (req, res) => {
        console.log("Connected to database")
    })


app.get('/api', (req, res) => {
    Post.find()
    .then((result) => {
        res.send(result)
    })
    .catch((err)=> {
        console.log(err)
    })
})

const port = process.env.PORT || 3001
app.listen(port, function() {
    console.log("express server is running on port " + port)
})

您需要添加
.lean()
,以获取计划javascript对象而不是查询对象。另外,由于您正在发送json,请使用
res.json()
而不是
res.send()

修改您的代码,如下所示:

Post.find().lean()
    .then((result) => {
        res.json(result)
    })
    .catch((err)=> {
        console.log(err)
    })

您需要添加
.lean()
,以获取计划javascript对象而不是查询对象。另外,由于您正在发送json,请使用
res.json()
而不是
res.send()

修改您的代码,如下所示:

Post.find().lean()
    .then((result) => {
        res.json(result)
    })
    .catch((err)=> {
        console.log(err)
    })

为了确保,集合名为“posts”,并且在数据库中也被称为“posts”?为了确保,集合名为“posts”,并且在数据库中也被称为“posts”?发现了问题。我在模型声明中添加了数据所在集合的名称。我还使用了你的代码,这很有帮助。非常感谢。发现了问题。我在模型声明中添加了数据所在集合的名称。我还使用了你的代码,这很有帮助。非常感谢。