我怎么知道回调中是否需要"err"参数?



我是mongodb和javascript的初学者。

我这里有一个简单的代码查找方法。这段代码不能运行。

解决方案是将最后一行更改为:cursor.limit(10).toArray((err, docs) => console.log(docs));.

我不明白的是为什么我需要在这里包括err参数?这里是toArray方法的文档。这里没有说需要err参数。我怎么知道在这里或在其他方法中需要err参数?

非常感谢!我认为这是一个非常基本的概念,我将感谢任何输入。

const client = new MongoClient(uri);
client.connect()
.then(() => {
const db = client.db('sample_mflix');
const coll = db.collection('movies');
const cursor = coll.find();
cursor.limit(10).toArray((docs) => console.log(docs));
})

在您链接的文档中,我们可以看到FindCursor.toArray有两种有效的语法排列:

  1. toArray(): Promise<TSchema[]>
  2. toArray(callback: Callback<TSchema[]>): void

由于您使用的是第二个,我们需要查看Callback的文档。它说只有一种有效的语法:

  1. Callback<T>: (error?: AnyError, result?: T) => void

您必须包含error参数才能有一个有效的Callback,然后您必须有一个有效的Callback才能使用toArray(:Callback)排列。


表示你不关心参数值的典型方式是使用下划线(_)作为参数名。

const client = new MongoClient(uri);
client.connect()
.then(() => {
const db = client.db('sample_mflix');
const coll = db.collection('movies');
const cursor = coll.find();
cursor.limit(10).toArray((_, docs) => { console.log(docs); });
})

如果您想使用第一个排列(它返回一个Promise),它看起来如下所示。这是你已经处理MongoClient.connect的方式。

const client = new MongoClient(uri);
client.connect()
.then(() => {
const db = client.db('sample_mflix');
const coll = db.collection('movies');
const cursor = coll.find();
cursor.limit(10).toArray()
.then(docs => { console.log(docs); });
})

实际上文档说的是传递回调。你检查过回调的参数了吗?这是错误和结果。

toArray(callback: Callback<TSchema[]>): void
Callback<T>: (error?: AnyError, result?: T) => void

最新更新