我正在使用带有打字稿的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)
})
})
})
}
答案 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 );
});
});
});
您通常需要在执行任何操作之前确保连接已打开