Angularjs 平均值应用程序中冒号后参数消失

Angularjs 平均值应用程序中冒号后参数消失,angularjs,node.js,api,express,ngresource,Angularjs,Node.js,Api,Express,Ngresource,我在开发MEAN stack应用程序时遇到了一些问题。 问题是: 在后端,我有一个从Mongo db返回数据的API。如果我从URL调用这个api,一切都很好,但是当AngularJS这样做时,问题就出现了 以下是我的服务器端路由文件的代码:(注意,这不是完整的代码,只是不工作的代码块) 以下是服务器端控制器中的功能: exports.listArticulosUsuario = function(req, res) { // Usar el método model 'find' pa

我在开发MEAN stack应用程序时遇到了一些问题。 问题是:

在后端,我有一个从Mongo db返回数据的API。如果我从URL调用这个api,一切都很好,但是当AngularJS这样做时,问题就出现了

以下是我的服务器端路由文件的代码:(注意,这不是完整的代码,只是不工作的代码块)

以下是服务器端控制器中的功能:

exports.listArticulosUsuario = function(req, res) {
    // Usar el método model 'find' para obtener una lista de artículos
    Article.find({creador:{_id: req.params.userId}}).sort('-creado')
        .populate('creador', 'firstName lastName fullName  username').exec(function(err, articles) {
            if (err) {
                // Si un error ocurre enviar un mensaje de error
                return res.status(400).send({
                    message: getErrorMessage(err)
                });
            } else {
                // Enviar una representación JSON del artículo
                res.jsonp(articles);
            }
        });
    };
 exports.articlesByUser = function(req, res, next, id) {
    // Usar el método model 'findById' para encontrar un único artículo
    Article.find({creador:{_id: req.params.userId}}).populate('creador',     'firstName lastName fullName').exec(function(err, articles) {
        if (err) return next(err);
        if (!articles) return next(new Error('Fallo al cargar el artículo ' + id));

        // Si un artículo es encontrado usar el objeto 'request' para pasarlo al siguietne middleware
        req.articles = articles;
        //console.log('hola')
        // Llamar al siguiente middleware
        next();
    });
};
如果我直接从URL发出请求,例如传递返回值,则此操作正常:

[{
"_id":"5679df6ec735551804206813",
"creador":{
    "_id":"5679df50c735551804206812",
    "firstName":"Guest",
    "lastName":"1",
    "username":"guest1",
    "fullName":"Guest 1",
    "id":"5679df50c735551804206812"},
"__v":0,
"contenido":"efsdafasfasd",
"titulo":"ese",
"creado":"2015-12-22T23:40:30.793Z"
}]
但问题是,当我尝试将资源实现到AngularJS中时,以下是客户端代码块:

这是配置文件

文件:users-articles.client.config.js(配置文件)

这是控制器文件

文件:users-articles.client.controller.js

//invocar modo javascript 'strict'
'use strict';

//crear el controller 'articles'
angular.module('usersArticles').controller('UsersArticlesController',  ['$scope', '$routeParams', '$location', 'UserArticles',
   function($scope,$routeParams,$location,UserArticles) {
     //Exponer el service Authentication

     //crear un nuevo metodo controller para recuperar una lista de articulos por usuario
     $scope.findByUser = function(){
     //usar el metodo 'query' de article para enviar una peticion GET apropiada
     $scope.articless = UserArticles.query();
   }
  }
]);
这是服务文件

文件:users-articles.client.services.js

//Invocar modo javascript strict
'use strict';


 //crear el service 'articles'
angular.module('usersArticles').factory('UserArticles', ['$resource' ,
    function($resource) {
    //usar el service '$resource' para devolver un objeto '$resource' article
         return $resource('/api/:userId/articles', {}, {
             query: { method: 'GET', params: {userId: '@creador._id'}, isArray: true }
        })

 }]);
这是视图文件

文件:users-articles.client.view.html

<!-- La view listar articulos -->
<section data-ng-controller="UsersArticlesController" data-ng-init="findByUser()">
  <h1>Articulos del user</h1>
  <h5><a data-ng-href="#!/articles" >Volver a todos los artículos</a></h5>
  <ul>
    <!--La lista de articulos -->
    <li data-ng-repeat="article in articless">
        <h3>
          <a data-ng-href="#!/articles/{{article._id}}" data-ng-bind="article.titulo"></a>
        </h3>
        <br>
        <small data-ng-bind="article.creado | date: 'medium'"></small>
        <small>/</small>
        <small>
          <a data-ng-href="#!/users/{{article.creador._id}}/articles" data-ng-bind="article.creador.fullName"></a>
        </small>
        <p data-ng-bind="article.contenido"></p>
    </li>
  </ul>
  <!-- Si no hay articulos en la lista, sugerimos al usuario que cree un nuevo articulo -->
  <div data-ng-hide="!articless || articless.length">
    Aún no hay articulos, ¿Por qué no <a href="/#!/articles/create">creas  uno</a>?
  </div>
</section>

用户关节

  • /

没有干草关节吗?
因此,考虑到所有涉及的代码,我现在将展示错误的行为。 当资源调用“/api/:userId/articles”时,它调用“/api/articles” 而且:userId似乎不存在

如果我调用'/api/Hello:userId/articles'它试图调用/api/Hello/articles

看起来冒号(:)后面的单词神奇地消失了


您能给我带来的任何帮助都是很好的,谢谢您,也很抱歉我的英语不好。

您能使用curl或Postman之类的工具来查看请求
/api/5679df50c735551804206812/articles
是否会产生结果吗?(我从您发布的示例中获取该ID)是的,正如我所说,它返回预期的JSON,因此API似乎工作正常。我认为这是Angularjs文件的客户端问题“Efsdafasd”,“titulo”:“ese”,“creado”:“2015-12-22T23:40:30.793Z”}]您使用的是这个特定版本的平均生成器所概述的AngularJS版本吗?您已经弄明白了吗?
//Invocar modo javascript strict
'use strict';


 //crear el service 'articles'
angular.module('usersArticles').factory('UserArticles', ['$resource' ,
    function($resource) {
    //usar el service '$resource' para devolver un objeto '$resource' article
         return $resource('/api/:userId/articles', {}, {
             query: { method: 'GET', params: {userId: '@creador._id'}, isArray: true }
        })

 }]);
<!-- La view listar articulos -->
<section data-ng-controller="UsersArticlesController" data-ng-init="findByUser()">
  <h1>Articulos del user</h1>
  <h5><a data-ng-href="#!/articles" >Volver a todos los artículos</a></h5>
  <ul>
    <!--La lista de articulos -->
    <li data-ng-repeat="article in articless">
        <h3>
          <a data-ng-href="#!/articles/{{article._id}}" data-ng-bind="article.titulo"></a>
        </h3>
        <br>
        <small data-ng-bind="article.creado | date: 'medium'"></small>
        <small>/</small>
        <small>
          <a data-ng-href="#!/users/{{article.creador._id}}/articles" data-ng-bind="article.creador.fullName"></a>
        </small>
        <p data-ng-bind="article.contenido"></p>
    </li>
  </ul>
  <!-- Si no hay articulos en la lista, sugerimos al usuario que cree un nuevo articulo -->
  <div data-ng-hide="!articless || articless.length">
    Aún no hay articulos, ¿Por qué no <a href="/#!/articles/create">creas  uno</a>?
  </div>
</section>