nodejs mongodb数据库使用mongoose报错Model.find() no longer accepts a callback

文章介绍了Mongoose7.x版本中find()和save()等函数不再接受回调,推荐使用async/await或promises处理。若不想改变,可将Mongoose降级到6.10.0版本以继续使用回调函数。示例代码展示了如何在新版本中正确处理这些操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

翻译一下,mongoose新版7.x废弃了find()\save()方法回调,可以修改为try catch,代码示例如下。

但最简单的就是把mongoose降低到6.10版本就可以了
npm uninstall mongoose
安装
npm install mongoose@6.10.0
完事。

 

Use async/await or promises for Mongoose functions

As Mongoose Released Version 7.x They Deprecated Some Functions As Per Official Documents functions no longer accept callbacks. They always return promises. To Solve MongooseError: Model.find() no longer accepts a callback error You need to Use async/await or promises for Mongoose functions. As Like Given below.

app.get("/posts", async (req, res) => {

  try {
    const posts= await Posts.find({ });
    res.send(posts);
    console.log(posts);
  } catch (err) {
    console.log(err);
  }

});

Or You are Using Save Function then You Need to Use the async function. As I Have Given Below.

// You need to use Async Function
const result = await data.save()
console.log(result);

And Now, Your error will be Solved.

Downgrade mongoose To 6.x

If You do not want to change the Function callback then You can Downgrade Your mongoose to Version 6.x. First of all, uninstall mongoose By running the npm command.

npm uninstall mongoose

And now, You need to install mongoose 6.x.

npm install mongoose@6.10.0

And now You can use the callback function without facing any error.










参考MongooseError: Model.find() no longer accepts a callback - Pincods.com

### Node.jsMongoDB 数据库连接与操作 #### 使用 Mongoose 连接 MongoDB Mongoose 是一种用于 Node.js 的对象数据建模 (ODM) 庢工具,可以简化 MongoDB 的交互过程。以下是使用 Mongoose 配置和连接 MongoDB 的方法: 首先,在项目中安装 mongoose 模块: ```bash npm install mongoose ``` 接着,可以通过以下代码实现基本的连接功能: ```javascript const mongoose = require('mongoose'); // 设置连接字符串 const uri = 'mongodb://localhost:27017/mydatabase'; // 建立连接并设置选项 mongoose.connect(uri, { useNewUrlParser: true, useUnifiedTopology: true }).then(() => console.log('Connected to MongoDB')) .catch(err => console.error('Connection error:', err)); ``` 上述代码展示了如何通过 `mongoose.connect` 方法建立到 MongoDB 的连接[^1]。 --- #### 使用原生 MongoDB 官方驱动程序 另一种方式是直接使用 MongoDB 提供的官方 Node.js 驱动程序。这是更为底层的操作模式,适合需要更高灵活性的应用场景。 同样先安装依赖包: ```bash npm install mongodb ``` 之后可按照如下方式进行初始化和连接: ```javascript const { MongoClient } = require('mongodb'); async function connectToDatabase() { const uri = 'mongodb://localhost:27017'; const client = new MongoClient(uri); try { await client.connect(); console.log('Connected successfully to server'); // 获取数据库实例 const database = client.db('myFirstDatabase'); const collection = database.collection('devices'); // 执行查询或其他操作 const queryResult = await collection.find({}).toArray(); console.log(queryResult); } catch (error) { console.error('Error connecting or querying the database', error); } finally { await client.close(); } } connectToDatabase().catch(console.dir); ``` 此部分说明了如何利用 MongoDB 官方驱动完成基础的数据读取操作[^2]。 --- #### 性能优化建议 无论采用哪种方式,都应考虑性能调优策略。例如,对于高并发环境下的应用,推荐保持持久化连接池而非频繁创建销毁连接;另外还需注意错误处理机制的设计以增强系统的健壮性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值