与打字稿`toArray`方法不工作的mongodb

我正在使用打字稿的Visual Studio。 这段代码中的所有东西都在编译 根据我正确使用toArray 的mongoDB文档 。 我有点新的打字稿,所以我不知道这是一个打字稿错误或mongodb。 testsvariables似乎有一个方法toArray但是当我称它没有任何回报。 console.log调用甚至没有运行。 根据文档和打字稿样本,这是做到这一点的正确方法。 任何人都可以与我分享我的代码中的任何错误,或“正确”的方式来做到这一点?

 ///<reference path="c:\DefinitelyTyped\mongodb\mongodb.d.ts"/> import mongodb = require("mongodb") var server = new mongodb.Server('localhost',27017, { auto_reconnect: true}) var db = new mongodb.Db('test', server, { w: 1 }); export interface Test { _id: mongodb.ObjectID; a: number; } db.open(function () { }); export function getTest(callback: (test: any) => void): void { db.collection('test', function (err, test_collection) { // test_collection.find().toArray -- this doesn't work either test_collection.find(function (err, tests) { console.log(tests, 'from getTest') // log's an object with `toArray` method tests.toArray(function (err, docs) { // nothing returned. Seems like the callback isn't ran if (err) { console.log(err) } console.log(docs, 'from toArray') callback(docs) }) }) }) } 

你的问题似乎并没有把你的函数放在db.open方法的callback中:

 var mongodb = require("mongodb"); var server = new mongodb.Server('localhost', 27017, { auto_reconnect: true }); var db = new mongodb.Db('test', server, { w: 1 }); db.open(function() { db.createCollection('test', function(err, collection) { collection.find().toArray(function(err,docs) { console.log( docs ); }); }); }); 

在做任何事情之前,你通常需要确保连接是开放的