извлекать данные из одной коллекции mongodb в нескольких проектах - PullRequest
0 голосов
/ 15 ноября 2018

У меня есть два проекта в hapiJS и mongoDB.Один для администратор , а другой для обычный пользователь .Я пытаюсь получить доступ к коллекции БД от admin user , которая определена у normal user .Следующая ошибка генерируется, когда я запускаю проект

{ MissingSchemaError: Schema hasn't been registered for model "Category". Use mongoose.model(name, schema)
    at new MissingSchemaError (/home/jeslin/projects/hapi/gg-admin/node_modules/mongoose/lib/error/missingSchema.js:22:11)
    at Mongoose.model (/home/jeslin/projects/hapi/gg-admin/node_modules/mongoose/lib/index.js:380:13)
    at Object.<anonymous> (/home/jeslin/projects/hapi/gg-admin/app/helpers/dashboard.js:7:27)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/home/jeslin/projects/hapi/gg-admin/app/controllers/web/dashboard.js:2:25)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)   message: 'Schema hasn\'t been registered for model "Category".\nUse mongoose.model(name, schema)',   name: 'MissingSchemaError' }

мой контроллер:

exports.showAllCategory = {
    description: 'returns all caregories',
    auth: {
        mode: 'try',
        strategy: 'standard'

    },

    handler: async (request,h) => {
        try {
            if (request.auth.isAuthenticated) {
                var userDetails = request.auth.credentials;
                let category = await dashboardHelper.fetchAllCatogeryItems();
                if (category.statusCode === 200) {
                    return h.view('dashboard/dashboard', {user: userDetails, categoryData: category.categoryData});
                }                 
            }
        } catch (error) {
            return h.redirect('/dashboard');
        }
    }
};

и мои действия с БД выполняются в следующем файле helper.js:

'use strict';

const Mongoose = require('mongoose');
const Category = Mongoose.model('Category');
const Joi = require('joi');

exports.fetchAllCatogeryItems = async() =>{
    return new Promise(async (resolve, reject) =>{
        try {
            let category = await Category.find();
            if (categoryData) {
                return resolve({
                    statusCode: 200,
                    categoryData: category
                })

            } else {
                statusCode: 400
            }
        } catch (error) {
            return reject(error)
        }
    });
};

Я подключил среду MONGO_URL, чтобы оба приложения указывали на один и тот же mongodb, и могу получить доступ к models, определенному в пользовательском модуле администратора

Я знаю, что мой кодне будет работать, так как моя Category модель определила в обычный пользователь и пытается получить доступ в администратор

Возможно ли получить доступ к моделямопределенный в обычный пользователь проект кто-нибудь ??Пожалуйста, помогите мне найти решение этой проблемы.Я потратил почти 2 дня на это.также я не опытен в nodejs (hapijs)

1 Ответ

0 голосов
/ 15 ноября 2018

вы можете использовать этот пакет npm Официальный драйвер MongoDB для Node.js. для запроса вашего mongodb без определения схемы. Надеюсь, это поможет.

...