Возникли проблемы при использовании async / await на mongoose 5 - PullRequest
0 голосов
/ 26 июня 2018

Я пытался реорганизовать здесь код из mongoose о том, как использовать его с лямбдой, но с треском провалился. Я думаю, что это связано с тем, как неправильно я использую async / await. Исходя из журналов, объект conn не инициализируется должным образом. В любом случае, вот мои коды.

db.js

const mongoose = require('mongoose');
const uri = 'mymongoURL';

module.exports.initDb = async function()  {
    return mongoose.createConnection(uri, {
    bufferCommands: false, // Disable mongoose buffering
    bufferMaxEntries: 0 // and MongoDB driver buffering
   });
}

index.js

const mongoose = require('mongoose');
let conn = null;
const db = require('./db');

exports.handler = async (event,context,callback) => {
context.callbackWaitsForEmptyEventLoop = false;

if (conn == null) {
  conn = await db.initDb();
  console.log("conn is still null: "+ conn == null);
  conn.model('Foo', new mongoose.Schema({
    promo: {
      type: String,
    }
  }, { collection: 'foo', timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' } } ));

  conn.model('Test', new mongoose.Schema({ name: String }));
}

    const FM = conn.model('Foo');
    let fooObj = new FM({promo:"Zimmer!"});
    fooObj.save(function(err, response) {
      console.log(err);
    });

    const M = conn.model('Test');
    let zim = new M({name:"Zim!"});
    zim.save(function (err, result){
    });
};

Заранее извиняюсь за неправильное использование async / await.

1 Ответ

0 голосов
/ 29 июня 2018

Для db.js вы забыли добавить await в функцию createConnection. Ожидайте использования в асинхронной функции.

const mongoose = require('mongoose');
const uri = 'mymongoURL';

module.exports.initDb = async function()  {
    return await(mongoose.createConnection(uri, {
    bufferCommands: false, // Disable mongoose buffering
    bufferMaxEntries: 0 // and MongoDB driver buffering
   }));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...