我正在玩mongob,并将一些测试数据{name:"david"}输入到“用户”集合中。我通过键入mongoshell验证了数据在MongoDB中
db.users.find()
结果:
{ "name":"david" }
在 node.js 脚本中,使用以下代码:
db.open(function(err, db) {
if (!err) {
console.log("db opened!");
}
else {
console.log(err);
}
db.collection('users', function(err, collection) {
collection.find({}, function(err, cursor) {
cursor.each(function(err, item) {
console.log(item);
});
});
});
db.close();
});
不返回任何结果
我没有发现任何错误,也没有错误。请告知
这种模式在我的节点/mongo示例中运行良好。该函数被传递一个回调,该回调接受err,集合。它获取“用户”集合,如果成功,调用针对集合的查找并将其转换为数组,但您也可以在游标上迭代。
在db.collection和connection.find调用中,您没有检查err和处理。你只是在公开叫牌时才这么做。
此外,您不应该调用db。close(),特别是当您使用连接池选项打开时(您不想在每次调用时打开和关闭连接)。如果确实要关闭,请在回调中关闭。
类似于:
var server = new Server(host, port, {auto_reconnect: true, poolSize: 5}, {});
MyStore.prototype.getUsers = function(callback) {
server.open(function(err, db) {
if (err) {
callback(err);
}
else {
db.collection('users', function(err, collection) {
if( err )
callback(err);
else {
collection.find().toArray(function(err, users) {
if (err) {
callback(err)
} else {
callback(null, users);
}
});
}
}
}});
这里有另一个关于node mongo的教程可能会有所帮助:http://howtonode.org/express-mongodb
正如CJohn正确指出的那样,您在检索数据之前关闭了DB连接。我知道这看起来不像,但这是节点结构和回调的情况。正确处理这种情况的代码是:
db.open(function(err, db) {
if (err) return console.log('error opening db, err = ', err);
console.log("db opened!");
db.collection('users', function(err, collection) {
if (err) return console.log('error opening users collection, err = ', err);
collection.find({}, function(err, cursor) {
if (err) return console.log('error initiating find on users, err = ', err);
cursor.each(function(err, item) {
// watch for both errors and the end of the data
if (err || ! item) {
// display (or do something more interesting) with the error
if (err) console.log('error walking data, err = ', err);
// close the connection when done OR on error
db.close();
return;
}
console.log(item);
});
});
});
});
您实际上是在集合中的数据返回之前关闭了数据库连接。
db.collection('users', function(err, collection) {
collection.find({}, function(err, cursor) {
cursor.each(function(err, item) {
console.log(item);
});
// our collection has returned, now we can close the database
db.close();
});
});
我有下面的SQL查询,我在flink工作中使用。< code>mysql_table是使用JDBC连接器创建的,而< code>kafa_source表是从传入的kafka流创建的。 我在两者之间执行时态连接,当我在Flink的sql-client CLI中检查时,运行良好(用< code>flink-faker测试)。内部查询工作得非常好,并且正在打印结果。有人能帮助我找出这个问题吗? 编辑:我
Firebase查询返回此查询的值 该项由model类捕获 但是,返回null
以下是我的疑问.... 我没有结果。 另外,我正在使用这个插件来生成请求正文。 我的查询如下所示.. null 感谢您到目前为止的阅读,如果有人能帮助我找出如何使这一工作,我将非常感谢。
问题内容: 我有一个数据库,正在运行以下查询: 上面的查询一次返回两个结果集,我不能分别触发两个查询。如何在Java类中一次处理两个结果集? 问题答案: 正确的代码来处理JDBC语句返回的多个: 重要位: 并返回以表明语句的结果只是一个数字,而不是一个。 您需要检查以了解是否还有更多结果。 确保关闭结果集或使用
问题内容: 我有以下从数据库获取十六进制代码的函数 我的问题是我在回调函数中返回了结果,但getColour函数未返回任何内容。我希望getColour函数返回的值。 在我调用getColour的那一刻,它不返回任何内容 我尝试做类似的事情 但当然SELECT查询在返回值时已经完成 问题答案: 您只需要对回调中的db查询结果进行处理。就像。
为什么我不能使用“findOne()”只返回一个字段?在下面的代码中,所有字段都返回。我也尝试了“findOne()”,但仍然不起作用。有人能告诉我是我弄错了还是怎么回事吗? 在这种情况下,我只想返回“信息”字段 文档如下所示: