使用typescript`toArray`方法的mongodb不起作用

时间:2014-03-27 13:02:21

标签: javascript node.js mongodb typescript typechecking

我正在使用带有打字稿的Visual Studio。此代码中的所有内容都会编译。根据{{​​3}}我正确使用toArray。我对打字稿有点新,所以我不知道这是打字稿错误还是mongodb。 tests变量似乎有一个方法toArray,但是当我调用它时,没有任何返回。 console.log调用甚至没有运行。根据文档和the mongoDB docs,这是正确的方法。任何人都可以与我分享我的代码中的任何错误,或“正确”的方式吗?

///<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)
            })
        })
    })
}

1 个答案:

答案 0 :(得分:3)

您的问题似乎并非将您的函数置于db.open方法的回调中:

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 );

    });

  });

});

您通常需要在执行任何操作之前确保连接已打开