首页 > 解决方案 > PostgreSQL 连接(通过 pg-promise)服务问题

问题描述

我创建了以下db_postgres工作正常的服务。

db_postgres.service.js

"use strict";

const Promise = require('bluebird');

const initOptions = {
    promiseLib: Promise,
    capSQL:     true
};

const pgp = require('pg-promise')(initOptions);

const cn_postgres = {
    host:     'localhost',
    port:      5432,
    database: 'db_name',
    user:     'user_name',
    password: 'user_password',
    ...
};

var db_postgres = null;

module.exports = {
    name: "db_postgres",
    version: "",
    mixins: [],
    hooks: {},
    settings: {},
    metadata: {},
    dependencies: [],

    actions: {
        getUsers() {
            db_postgres.any('SELECT * FROM user')
                .then(data => {
                    return console.log(data);
                })
                .catch(error => {
                    return console.log(error);
                });
        },
    },

    methods: {},
    events: {},
    created() {},

    async started() {
        return db_postgres = await pgp(cn_postgres);
    },

    async stopped() {
        if (db_postgres) {
            return db_postgres.$pool.end();
        }
    }
}

案子:

问题: 最简单和最简单的方法是什么?

我的努力:

查询.service.js

"use strict";

module.exports = {
    name: "queries",
    version: "",
    mixins: [db_postgres],
    hooks: {},
    settings: {},
    metadata: {},
    dependencies: ["db_postgres"],

    actions: {
        getUsers() {
            db_postgres.any('SELECT * FROM user')
                .then(data => {
                    return console.log(data);
                })
                .catch(error => {
                    return console.log(error);
                });
        },
    },

    methods: {},
    events: {},
    created() {},
    async started() {},
    async stopped() {}
}

问题:

蒂亚

标签: moleculer

解决方案


您应该使用 require 加载db_postgres并用作 mixin,而不是依赖项。


推荐阅读