当前位置: 首页 > 知识库问答 >
问题:

平均堆栈应用程序未从MongoDB检索数据[重复]

牧璞
2023-03-14

我对meanstack应用程序的研究还相当陌生,我正在研究一个已经存在的meanstack应用程序,它在从mongoDB数据库中提取信息并以表格形式发布后,会在页面上显示一些信息。这些信息仍然存在于数据库中,但在代码行的某个地方,代码停止在页面上显示数据。现在,我的npm日志中出现以下错误:“CastError:Cast to ObjectId在路径“\u id”处的值“”失败。我很难找出错误所在。我甚至尝试在下面的serviceA.js代码中包含ngResources作为依赖项,但没有任何区别。

为了澄清这一点,这个问题试图确定为什么一段特定的代码不起作用。前面的问题有一个类似的错误,它讨论了如何将字符串转换为objectID。这不是问题所在。我正在努力解决的是如何从MongoDB中获取相关数据。似乎没有执行正确的查询,我正在试图找出原因。

谢谢你的帮助。这是我的密码:

html代码(来自文件code. html):

<tr ng-repeat="x in allX | offset: offsetValue | limitTo: itemsPerPage track by x._id">

相应的控制器代码(来自aController.js):

aController.controller('aCtrl', ['$scope','$http', '$state', 'serviceA', function($scope, $http, $state, serviceA, $rootScope) {

  if ($state.current.name == 'codeA') {
    $scope.reqLoadingHash = {};
    var docs = ['doc_a', 'doc_b', 'doc_c'];
    serviceA.get({}, function (response) {
      $scope.allX = response.searchResult;
      angular.forEach($scope.allX, function(val, key) {
        var numDocs = 0;
        docs.forEach(function(prop) {
          if (val[prop]) {
            numDocs++;
          }
        });
        $scope.allX[key].numDocs = numDocs;
      });
      $scope.range();
    });
  }
}])

服务代码:

(function() {
  'use strict';

  angular.module('routerApp')
    .factory('serviceA', serviceA);

  serviceA.$inject = ['$resource'];

  function serviceA($resource) {
    return $resource('/api/requestA/:ownerRequestId', {}, {
      getRequest: {
        method: 'GET',
        url: '/api/requestA/user/:userId/listing/:listingId'
      },
      update: {
        method: 'PUT'
      },
      delete: {
          method: 'DELETE'
      }
    });
  }
})();

路由器代码:

var Router = require("express").Router;
module.exports = function () {
  var router = new Router();
  router.route('/requestA/:ownerRequestId').get(function(req, res, next) {
        ownerRequest.findById(req.params.ownerRequestId)
            .populate('listing owner')
            .exec(function(err, ownerRequest) {
                if (err) {
                    return next(err);
                }

                res.json({searchResult: ownerRequest});
            });
    });
  return router;
}

共有1个答案

符风畔
2023-03-14

错误消息'CastError: Cast to ObjectId for value"at path"_id'来自mongoDB函数findById()。该函数期望ObjectId作为第一个参数,但在您的情况下,它只是空字符串,因此会引发错误。

在角度控制器中,调用serviceA时,不会将ownerRequestId作为参数传递。get()

 类似资料:
  • 如何从$scope单独获取不同的建筑ID列表。项目并存储到$scope中。destinationBuildingIdList变量?

  • 在我的mongodb数据库中有4个集合。我可以使用每个集合逐个检索数据。现在,如何使用findone、getAll这样的关键字从同一代码中的不同集合中检索数据?我的模特。js如下所示。分贝- 模型1。js 模式2。js

  • 我正在开发一个平均堆栈应用程序,我想显示一些响应的图像。具体要求:有搜索框,当用户输入图像名称时,服务器响应该图像,浏览器显示该图像。我有最大的70个图像大小30KB最大。我应该将这些存储在mongoDB中,并且对于每个请求节点,服务器应该点击mongoDB并在响应中提供该映像,还是使用Angular.js提供该映像?请推荐这样做的有效方法。

  • 我一直试图访问数据在iFrame使用硒和没有任何成功。 你有什么建议吗?

  • 我需要帮助在类别上发布多个数据,当我在选择输入上选择多个数据并提交时,它会抛出错误。请参阅下面的错误 下面是模型模式。模型 这是我的路线文件。路线 当我在输入选择上选择多个时,这是我提交时的错误。 但当我只选择一个时,它就会通过。我只能保存一个在五月类别字段,我想保存多个在我的类别字段。