我正在使用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;
};
文档猫鼬AWS Lambda: https://mongoosejs.com/docs/lambda.html
更新:
M.find({}).exec().then(function(allDocs){
console.log('getting al docs')
console.log(allDocs)//[]
});
MongoDB Atlas
答案 0 :(得分:0)
find是异步的,所以我认为您需要这样做:
M.find({}).exec().then(function(allDocs){
//do your thing
});
或等待
let alldocs = await M.find({});