首页 > 解决方案 > 如何从 Mongodb 获取数据

问题描述

我有这个片段:

const slackProfiles = await Promise.all(

checkinsDetails.map(async ({ employeeEmail }) => {
    const employeeData = Employee.findOne({
      workEmail: employeeEmail,
    });

    console.log('employee ', employeeData);

    const slackId = employeeData ? employeeData.slackId : '';

当我在控制台中记录员工数据时,我得到了这种数据:

employee  Query {
   _mongooseOptions: {},
   _transforms: [],
   _hooks: Kareem { _pres: Map {}, _posts: Map {} },
   _executionCount: 0,
   mongooseCollection:
   NativeCollection {
      collection: null,
 opts:
  { bufferCommands: true,
    capped: false,
    '$wasForceClosed': undefined },
 name: 'employees',
 collectionName: 'employees',
 conn:
  NativeConnection {
    base: [Mongoose],
    collections: [Object],
    models: [Object],
    config: [Object],
    replica: false,
    options: null,
    otherDbs: [],
    relatedDbs: {},
    states: [Object],
    _readyState: 0,
    _closeCalled: false,
    _hasOpened: false,
    '$internalEmitter': [EventEmitter],
    _listening: false },
 queue: [],
 buffer: true,
 emitter:
  EventEmitter {
    _events: [Object: null prototype] {},
    _eventsCount: 0,
    _maxListeners: undefined } },
 model:
{ [Function: model]
 hooks: Kareem { _pres: [Map], _posts: [Map] },
 base:
  Mongoose {
    connections: [Array],
    models: [Object],
    modelSchemas: [Object],
    options: [Object],
    _pluralize: [Function: pluralize],
    Schema: [Function],
    model: [Function],
    plugins: [Array] },
 modelName: 'Employee',
 ...

await当我之前追加EMployee.findOne({})时,控制台中没有记录任何内容。我也试过

Employee.findOne({
      workEmail: employeeEmail,
    },(err,data)=>console.log("data",data);

但它不输出任何东西。

标签: node.jsmongodbmongoose

解决方案


console.log输出的是查询而不是结果。此外,从 Node.js 在 MongoDB 上触发查询的回调格式不需要等待/异步。

假设这Employee是一个集合对象,以下应该可以工作。在这种情况下避免异步/等待,因为回调函数会处理它。

Employee.findOne({
      workEmail: employeeEmail,
    },(err,data)=>console.log("data",data);

推荐阅读