NodeJS 无法使用expressjs mongoose库从本地MongoDB读取数据

u3r8eeie  于 2023-01-12  发布在  Node.js
关注(0)|答案(1)|浏览(110)

我正在学习Mongoose和MongoDB,并尝试从本地托管的MongoDB读取数据,我键入了Mongoose文档中的类似示例。但它不起作用。我在名为personal_website的数据库中创建了一个名为blogs的简单MongoDB集合,用于测试目的。该集合中只有一个文档

personal_website> db.blogs.find()
[ { _id: ObjectId("63bbcb27ae437ded486fecf4"), title: 'test' } ]

这是我的密码,但不起作用

user@user-machine: ~$ cat server.js

const mongoose = require("mongoose");
mongoose.set("strictQuery", true);
mongoose.connect("mongodb://localhost/personal_website", () => {
    console.log("connected to databse personal_website");
});

let blogSchema = new mongoose.Schema({
  title: String,
});

let Blog = mongoose.model("blog", blogSchema);

let blogCount = Blog.find({}).count();
console.log(blogCount);

我运行node server.js,但得到以下输出:

Query {
  _mongooseOptions: {},
  _transforms: [],
  _hooks: Kareem { _pres: Map(0) {}, _posts: Map(0) {} },
  _executionStack: null,
.........
connected to databse personal_website

我希望得到类似的结果,因为我运行db.blogs.find().count()命令在MongoDB shell 。我该怎么解决这个问题?我应该查询数据库后,连接建立?我看到很多教程连接到他们的MongoDB在一开始就像我一样,也有文档说 “Mongoose让你立即开始使用你的模型,而不需要等待Mongoose建立到MongoDB” 的连接。那么你们能帮我找出这个问题的原因以及如何修复它吗?我真的很感激,我在那里呆了四个小时。

vybvopom

vybvopom1#

1.在连接字符串中使用端口号和127.0.0.1"mongodb://127.0.0.1:27017/personal_website"而不是"mongodb://localhost/personal_website"(27017是默认端口)
1.尝试用异步函数 Package 查询并使用await:

async function count() {
  let blogCount = await Blog.find({}).count();
  console.log(blogCount);
}

count();

相关问题