не может получить модель мангуста внутри одного сервиса от другого, используя senecajs - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть две службы seneca, работающие на портах 3000 и 3001.Я пытаюсь создать отдельное соединение mongoose со службой на порту 3000 создать модель mongoose и получить ее в службе, работающей на порту 3001

connection-service.js

require('dotenv').config();
console.log("HOST",process.env.DB_PORT);

const seneca = require('seneca');
const plugins=require('./seneca_plugins/plugins');

const service=seneca();

service.use(plugins.user,{
    collection:{UserAccountsCollection:"users"},
    db:'accounts'
});

service.listen({port:3000,pin:'service:db_connection'});

код плагина для connection-service.js

const UserSchema = require('../db/models/user/user');

module.exports = async function (options) {

    const dbConn = await require('./utils/dbConnections')(process.env.DB_HOST, process.env.DB_PORT, options.db);

    this.add('service:db_connection,usage:GetUserAccountsConnection', async function (args, done) {

        const UserModel = await dbConn.model('UserModel', UserSchema, options.collection.userAccountsCollection);
        console.log(UserModel) //works
        //done(null,{somekey:"someRandom_string_or_object"}) //works
        done(null, {model:UserModel}); //passes empty object i.e. null,{}
    })

}

service.js running as client

const service= require('seneca')();

const plugin=require('./seneca_plugins/plugin');

service.client({port:3000,pin:'service:db_connection'});

service.use(plugin);

код плагина для обслуживания клиентов

module.exports = function (options) {

    this.act('service:db_connection,usage:GetUserAccountsConnection', function (msg, reply) {
        console.log("I am acting")
        let model =reply.model   //reply is returned as {}
        console.log(model);    //prints undefined in console

    })

    this.add(..... //other code follows
}

однако, когда я использую done(null,{somekey:"someRandom_string_or_object"}), он работает, но не работает, когда я передаю созданную модель done(null,{model:UserModel})

1 Ответ

0 голосов
/ 25 февраля 2019

Вы не можете смешивать обратные вызовы и асинхронное / ожидание.Попробуйте https://www.npmjs.com/package/seneca-promisify, если хотите использовать async await.

...