我是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
有两种有效的语法排列:
toArray(): Promise<TSchema[]>
toArray(callback: Callback<TSchema[]>): void
由于您使用的是第二个,我们需要查看Callback
的文档。它说只有一种有效的语法:
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