【问题标题】:mongoose retrieves empty array from MongoDB (NodeJS/AWS Lambda)mongoose 从 MongoDB (NodeJS/AWS Lambda) 检索空数组
【发布时间】:2019-10-22 06:00:21
【问题描述】:

我正在 AWS Lambda 函数中使用 NodeJS 为我的 MongoDB Atlas 创建连接。我能够成功连接,但是当我执行.find({}) 获取所有数据时,我得到一个空数组。

Lambda

const mongoose = require('mongoose');

let conn = null;

const uri = 'mongodb+srv://xxx:xxx@todo-fnddg.mongodb.net/test';
let M = null;
exports.handler = async function(event, context) {
  nodejs-aws-lambda-mongodb-atlas
  context.callbackWaitsForEmptyEventLoop = false;
  if (conn == null) {
    conn = await mongoose.createConnection(uri, {
      bufferCommands: false,
      bufferMaxEntries: 0,
      useNewUrlParser: true
    });
    M = conn.model('Todo', new mongoose.Schema(
      {
        title: String,
        description: String,
        date: Date,
        status: String
      }
    ));
  }


  const doc =  M.find({});
  console.log('items in the DB')
  console.log(doc);

  return null;
}; 

Mongoose AWS Lambda 文档: https://mongoosejs.com/docs/lambda.html

更新:

 M.find({}).exec().then(function(allDocs){
    console.log('getting al docs')
    console.log(allDocs)//[]
  });

MongoDB 地图集

【问题讨论】:

  • 应该是mongoose.model 而不是conn.model

标签: node.js mongodb amazon-web-services mongoose aws-lambda


【解决方案1】:

find 是异步的,所以我认为您需要这样做:

M.find({}).exec().then(function(allDocs){
   //do your thing
});

或等待它

let alldocs = await M.find({});

【讨论】:

  • 嗨!谢谢您的帮助。我没有工作。我已经更新了我的问题
  • 当你使用 await M.find({}) 时会发生什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
  • 2017-09-12
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 2018-07-23
  • 2014-12-05
相关资源
最近更新 更多