我正在使用MEAN.IO堆栈,为什么我不能使用require命中我的数据访问层?

时间:2014-07-30 04:02:37

标签: angularjs express angular-ui-router mean.io

所以,我使用的是mean.io,由于某种原因,我的routes.js从未触及我的索引。所有'方法,或者' exports.all'功能,即使我需要服务器端控制器的功能。此外,我的路由使用angular-ui-router完成。有人知道如何从MEAN.IO中的路由调用后端方法吗?我继续使用:

 'use strict';

    module.exports = function(System, app, auth, database) {

        // Home route
        var index = require('../controllers/index');
 app.route('/test').get(index.all);
        app.route('/')
            .get(index.render);

    };

我想点击' index.all'但即使我导航到/测试,它仍然会得到 index.render。有人知道为什么吗?

这是控制器文件:

 'use strict';

    var mean = require('meanio');
    var mongoose = require('mongoose');
    var Composition = mongoose.model('Composition');

    exports.render = function(req, res) {
    console.log(req.user);
        var modules = [];
        // Preparing angular modules list with dependencies
        for (var name in mean.modules) {
            modules.push({
                name: name,
                module: 'mean.' + name,
                angularDependencies: mean.modules[name].angularDependencies
            });
        }

        function isAdmin() {
            return req.user && req.user.roles.indexOf('admin') !== -1;
        }


        // Send some basic starting info to the view    
        res.render('index', {
            user: req.user ? {
                name: req.user.name,
                _id: req.user._id,
                username: req.user.username,
                roles: req.user.roles
            } : {},
            modules: modules,
            isAdmin: isAdmin,
            adminEnabled: isAdmin() && mean.moduleEnabled('mean-admin')
        });
    };

    exports.all = function(req, res) {

        console.log(req.user);
        Composition.find({user: req.user}, 'title description').sort('-created').populate('user', 'name username').exec(function(err, compositions) {
            if (err) {
                return res.jsonp(500, {
                    error: 'Cannot list the compositions'
                });
            }
            res.jsonp(compositions);

        });
    };

这是前端还是后端问题?感谢任何可能有用的建议。

1 个答案:

答案 0 :(得分:1)

您正在导航。所以你在浏览器网址中点击链接了吗?然后,您应该尝试localhost:3000/test而不是l ocalhost:3000/#!/test

localhost:3000:/#!/<something>形式的网址是有角度的路线。查找角度路由和视图。使用角度视图比服务器端渲染更好。为test执行角度路由并添加与其对应的视图。使用常规$http.get调用获取视图中的动态数据。

选中此tutorial进行路由并以角度

添加视图