猫鼬不适用于 hapi.js(简单设置)

Mongoose is not working with hapi.js(simple setup)

我正在试验 hapi.js 并想将 hapi 与 mongoose 连接起来。 但每当我去路线时,它都在说 Internal Server Error

快速设置:

我的文件结构是这样的:(我没有包含与问题无关的内容)

/app.js
/node_modules
/models
    /Product.js
/routes
    /product-page
         /product.js
/views
    /product
         /product.html

我的app.js里面是这个。

const Hapi = require('hapi');

const routes = require('./routes');
const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/hapidb', { useNewUrlParser: true })
    .then(() => console.log('MongoDB connected...'))
    .catch(err => console.error(err));



const server = Hapi.server({
    port: 3000,
    host: 'localhost'
});


const init = async () => {

    await server.start();
    console.log(`Server running at: ${server.info.uri}`);

    // Home Route
    server.route(routes);

    await server.register(require('vision'));

    server.views({
        engines: {
            html: require('handlebars')
        },
        relativeTo: __dirname,
        path: 'views',
        partialsPath: 'views/partials'
    });


};

process.on('unhandledRejection', (err) => {

    console.log(err);
    process.exit(1);
});

init();

如您所见,mongoose.connect 正在运行,当我在终端中键入 node app.js 时,MongoDB connected... 正在获取输出。

现在我为架构创建了一个 models/Product.js,这是架构:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
var ProductSchema = new Schema({
    name: String
});
module.exports = mongoose.model('Product', ProductSchema);

现在在我的路线 product.js 文件中。这是设置:

    const Product = require('../../model/Product')


module.exports = [
    {
        method: 'GET',
        path: '/product',
        handler: (request, h) => {
             //something is not working here
            Product.find(function(error, product) {
                if (error) {
                    console.error(error);
                }

                return h.view('product/product.html')
            })
        }
    }
]

现在我试着去 http://localhost:3000/product 但是当我去那里时,它说:

{
"statusCode": 500,
"error": "Internal Server Error",
"message": "An internal server error occurred"
}

终端里面是这个Debug: internal, implementation, error Error: handler method did not return a value, a promise, or throw an error

我做了什么:

我去我的终端输入 mongoshow dbs ,我注意到 hapidb 数据库不在这里,所以我想这可能是问题所在。 所以我去输入 use hapidbdb.products.insert({name: "Television"})

我尝试重新启动 node app.js 并转到 http://localhost:3000/product 。还是不行。

现在我尝试将我的路由处理程序稍微更改为此

 handler: (request, h) => {
                //I added an empty object to find all product
        Product.find({}, function(error, product) {
            if (error) {
                console.error(error);
            }

            return h.view('product/product.html')
        })
    }

我能想到的就这些了。如果我只 return return h.view('product/product.html') 它正在工作。但是代码中有 Product.find,它不起作用。

请帮忙

尝试像这样返回 Product.find:

handler: (request, h) => {
    return Product.find({}, function(error, product) { // <-- This line
        if (error) {
            console.error(error);
        }

        return h.view('product/product.html')
    })
}