node.js - 无法从 mongodb 检索数据到 Node JS
问题描述
试图从 MongoDB 获取数据到 Node JS
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
MongoClient.connect(url, function(err, db) {
if (err) throw err;
var dbo = db.db("Mydb");
console.log("Hello")
dbo.collection("POC_DB").find({}, function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
});
如果我将其设为“result.name”,那么我将得到未定义的输出。我怀疑它可能是实际输出中给出的原始参数中的值。
实际光标输出
Cursor {
_readableState:
ReadableState {
objectMode: true,
highWaterMark: 16,
buffer: BufferList { head: null, tail: null, length: 0 },
length: 0,
pipes: null,
pipesCount: 0,
flowing: null,
ended: false,
endEmitted: false,
reading: false,
sync: true,
needReadable: false,
emittedReadable: false,
readableListening: false,
resumeScheduled: false,
emitClose: true,
destroyed: false,
defaultEncoding: 'utf8',
awaitDrain: 0,
readingMore: false,
decoder: null,
encoding: null },
readable: true,
_events: {},
_eventsCount: 0,
_maxListeners: undefined,
operation:
FindOperation {
options:
{ skip: 0,
limit: 0,
raw: undefined,
hint: null,
timeout: undefined,
slaveOk: true,
readPreference: [ReadPreference],
db: [Db],
promiseLibrary: [Function: Promise] },
ns: MongoDBNamespace { db: 'Mydb', collection: 'POC_DB' },
cmd:
{ find: 'Mydb.POC_DB',
limit: 0,
skip: 0,
query: {},
raw: undefined,
hint: null,
timeout: undefined,
slaveOk: true,
readPreference: [ReadPreference] },
readPreference: ReadPreference { mode: 'primary', tags: undefined },
cursorState:
{ cursorId: null,
cmd: [Object],
documents: [],
cursorIndex: 0,
dead: false,
killed: false,
init: false,
notified: false,
limit: 0,
skip: 0,
batchSize: 1000,
currentLimit: 0,
transforms: undefined,
raw: undefined,
reconnect: true } },
pool: null,
server: null,
disconnectHandler: undefined,
bson: undefined,
ns: 'Mydb.POC_DB',
namespace: MongoDBNamespace { db: 'Mydb', collection: 'POC_DB' },
cmd:
{ find: 'Mydb.POC_DB',
limit: 0,
skip: 0,
query: {},
raw: undefined,
hint: null,
timeout: undefined,
slaveOk: true,
readPreference: ReadPreference { mode: 'primary', tags: undefined } },
options:
{ skip: 0,
limit: 0,
raw: undefined,
hint: null,
timeout: undefined,
slaveOk: true,
readPreference: ReadPreference { mode: 'primary', tags: undefined },
db:
Db {
_events: {},
_eventsCount: 0,
_maxListeners: undefined,
s: [Object],
serverConfig: [Getter],
bufferMaxEntries: [Getter],
databaseName: [Getter] },
promiseLibrary: [Function: Promise] },
topology:
Server {
_events:
{ serverOpening: [Function],
serverDescriptionChanged: [Function],
serverHeartbeatStarted: [Function],
serverHeartbeatSucceeded: [Function],
serverHeartbeatFailed: [Function],
serverClosed: [Function],
topologyOpening: [Function],
topologyClosed: [Function],
topologyDescriptionChanged: [Function],
commandStarted: [Function],
commandSucceeded: [Function],
commandFailed: [Function],
joined: [Function],
left: [Function],
ping: [Function],
ha: [Function],
authenticated: [Function],
error: [Array],
timeout: [Array],
close: [Array],
parseError: [Array],
open: [Array],
fullsetup: [Array],
all: [Array],
reconnect: [Array] },
_eventsCount: 25,
_maxListeners: Infinity,
clientInfo:
{ driver: [Object],
os: [Object],
platform: 'Node.js v10.13.0, LE' },
s:
{ coreTopology: [Server],
sCapabilities: [ServerCapabilities],
clonedOptions: [Object],
reconnect: true,
emitError: true,
poolSize: 5,
storeOptions: [Object],
store: [Store],
host: 'localhost',
port: 27017,
options: [Object],
sessionPool: [ServerSessionPool],
sessions: Set {},
promiseLibrary: [Function: Promise] } },
cursorState:
{ cursorId: null,
cmd:
{ find: 'Mydb.POC_DB',
limit: 0,
skip: 0,
query: {},
raw: undefined,
hint: null,
timeout: undefined,
slaveOk: true,
readPreference: [ReadPreference] },
documents: [],
cursorIndex: 0,
dead: false,
killed: false,
init: false,
notified: false,
limit: 0,
skip: 0,
batchSize: 1000,
currentLimit: 0,
transforms: undefined,
raw: undefined,
reconnect: true },
logger: Logger { className: 'Cursor' },
s:
{ numberOfRetries: 5,
tailableRetryInterval: 500,
currentNumberOfRetries: 5,
state: 0,
promiseLibrary: [Function: Promise],
currentDoc: null,
explicitlyIgnoreSession: false } }
解决方案
.find() 将结果作为数组返回(如果存在),因此您必须像 result[0].name 一样获取数据。您还应该检查数组的长度,以免出现越界异常。
推荐阅读
- python - 使用python将句子中的每个单词替换为单词索引
- node.js - 必须提供 JWT - Delete 方法将令牌返回为 null 而不是用户令牌
- android - 如何防止 AndroidStudio Android Logcat 过滤我的日志
- java - 将意大利面条代码转换为带有流的 Java 8
- xamarin - 标识符未找到 xamarin ios 文化
- python - conda 为什么要创建新的安装环境
- javascript - 如何在 d3 v5 forceSimulation 中复制向下的重力?
- javascript - 如何使用 IoNIC 从国际电话号码中获取电话本地号码
- azure - Azure 分析服务部署
- amazon-athena - 自定义聚合和计算字段的 Quicksight 问题