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

CastError:使用平均堆栈对路径“\u id”处的值“GetGelImages”转换为ObjectId失败

华福
2023-03-14

我已经四处查看了堆栈溢出,似乎找不到与我的环境相似的错误。我已经尽了最大努力来隔离错误的来源,但没有任何运气。错误如下:

CastError:在ObjectId的路径“\u id”处,值“GetGelImages”的转换到ObjectId失败。cast(/mean/node\u modules/mongoose/lib/schema/objectid.js:117:13)

at ObjectId.castForQuery (/mean/node_modules/mongoose/lib/schema/objectid.js:166:17)
at Query.cast (/mean/node_modules/mongoose/lib/query.js:2340:32)
at Query.findOne (/mean/node_modules/mongoose/lib/query.js:1118:10)
at Query.exec (/mean/node_modules/mongoose/node_modules/mquery/lib/mquery.js:2213:16)
at Query.exec (/mean/node_modules/mongoose/lib/query.js:1797:19)
at exports.projectByID (/mean/app/controllers/projects.server.controller.js:426:142)
at paramCallback (/mean/node_modules/express/lib/router/index.js:378:7)
at param (/mean/node_modules/express/lib/router/index.js:358:5)
at Function.proto.process_params (/mean/node_modules/express/lib/router/index.js:384:3)
GET /projects/GetGelImages 500 17.173 ms - -

代码遵循以下基本结构:我有一个使用Angular执行$http.get的html页面。请注意,我已经大大删除了这些函数,以便找到错误的来源。

//HTML Button Implementation within the view
<button class="btn btn-primary" ng-click="getGelPhotos()"> 
                View Gel Photos
                <i class="glyphicon glyphicon-arrow-down"></i>
            </button>




//AngularJS Function implementation within the controller
$scope.getGelPhotos = function(){
        $http.get('/projects/GetGelImages').
        success(function(req, res){
            console.log('Successful get call.' + res.fileName);                                                                  
        }).
        error(function(err){
            alert('Error in retrieval of gel image.');
        });
    };

这些部分似乎工作正常。当我按下视图上的查看凝胶照片按钮时,我会收到提示弹出窗口,指示调用getGelPhotos函数的错误部分。

快速路线:

'use strict';

/**
 * Module dependencies.
 */
var users = require('../../app/controllers/users'),
    projects = require('../../app/controllers/projects');
.
.
.
.

app.route('/projects/GetGelImages')
        .get(users.requiresLogin, projects.retrieveGelImage);

我认为代码甚至没有到达快速路线,但是当我完全删除路线时,它给出了完全相同的错误。

最后,控制器中包含的服务器端节点:

'use strict';

/**
 * Module dependencies.
 */
var mongoose = require('mongoose'),
    errorHandler = require('./errors'),
    Project = mongoose.model('Project'),
    Log = mongoose.model('Log'),
    Plate = mongoose.model('Plate'),
    Sample = mongoose.model('Sample'),
    User = mongoose.model('User'),
    _ = require('lodash'),
    xlsx = require('xlsx'),
    path = require('path'),
    fs = require('fs'),
    nodemailer=require('nodemailer'),
    sys = require('sys'),
    exec = require('child_process').exec,
    multiparty = require('multiparty'),
    util = require('util'),
    http = require('http'),
    uuid = require('node-uuid'),
    express = require('express');


.
.
.


exports.retrieveGelImage = function(req, res) {
console.log('Made it to get gel image function');
};

到目前为止,我还没有收到此日志消息。我认为问题在于角路线和快速路线之间的中间空间。

我是平均堆栈的新手,所以如果有什么我能做的更具体的,请告诉我。

非常感谢。

共有1个答案

马高谊
2023-03-14

好的,答案很简单,虽然我不确定为什么它会起作用。这是完整的路线表。我只是简单地将凝胶上传路径下面的凝胶检索路径表单移动到它上面。

module.exports = function(app) {
// Project Routes
app.route('/projects')
    .get(users.requiresLogin, projects.list)
    .post(users.requiresLogin, users.hasOfficeStaffAuthorization, projects.create);

app.route('/projects/:projectId')
    .get(users.requiresLogin, projects.read)
    .put(users.requiresLogin, users.hasOfficeStaffAuthorization, projects.update)
    .delete(users.requiresLogin, users.hasOfficeStaffAuthorization, projects.delete);

app.route('/projects/:projectId/GeneratePlateTemplate')
    .post(users.requiresLogin, projects.generatePlateTemplate);

app.route('/projects/:projectId/GeneratePlates')
    .post(users.requiresLogin, projects.generatePlates);

app.route('/projects/:projectId/UploadPlateLayout')
    .post(users.requiresLogin, projects.uploadPlateLayout);


//Gel Retrieval Route------------------------------//ROUTE location matters!
app.route('/projects/:projectId/GetGelImages')
    .get(users.requiresLogin, projects.retrieveGelImage);


//-------------------------------------------------

//Gel Upload Routes--------------------------------
app.route('/projects/:projectId/UploadGelImage')
    .post(users.requiresLogin, projects.postImage);


app.route('/projects/:projectId/UploadGelImage/gridfs')
    .post(users.requiresLogin, projects.storeImage);
//-------------------------------------------------





app.route('/projects/GenerateBarcodes')
    .post(users.requiresLogin, projects.generateBarcodes);

app.route('/projectsByStatus/:projectStatus')
    .get(users.requiresLogin, projects.listOfProjectsByStatus);

// Finish by binding the project middleware
app.param('projectId', projects.projectByID);
};
 类似资料:
  • 好吧,我看到这里有一些这样的帖子,但他们没有帮助我。。。 让我描述一下我的问题: 我有两个模式 现在我已经有了一个B对象,我想创建一个a对象。 所以我这样做: b对象是从我的monogDB加载的。调试器为我的b显示了一个有效的ObjectId(53627ed535d9d04416e26218或Sb~Õ5ÙÐDáb)。 但是,当我保存新的A-Object时,会出现错误:“CastError:Cast

  • 我试图在一个MEAN堆栈应用程序中处理一个计划。当我调用findOne时,我得到了这个错误: 我就是这样做的: 我注意到,当我把id作为一个字符串(如下所示)时,一切正常。 所以,我控制台: 我一直在尝试我在这里找到的东西,但任何东西都可以帮助我解决这个问题:/

  • 嘿,伙计们真的需要一些关于删除路由的帮助。我正在使用RESTful路由,尝试遵循约定,添加删除路由时,我得到错误: CastError:模型"Blog"的路径"_id"处的值"X"转换为ObjectId失败 我已经在stackoverflow上搜索了这个问题,我能想到的最好的版本是猫鼬有一个错误。我把它回滚到V4.10.0,仍然在处理这个问题。我的代码如下:

  • 我希望有人能帮我找出我在这里做错了什么。我一直在寻找,我可以找到很多类似的问题,但没有一个我足够聪明来解决我的问题。我得到以下错误: CastError:对于模型“customer”的路径“\u id”处的值“customers”,转换为ObjectId失败 它以前是有效的,我设法打破了它,我解开了所有我认为我改变了的东西,我仍然得到了错误。 这是我的模式: 我的路线: 和我的控制器: 此外,以下

  • 前言:我对猫鼬/Express的工作相对来说是新手。 我试图制作一个应用程序,其中一个名为“space”的猫鼬模式中有一个名为“posts”的数组。数组的内容是对另一个名为“POST”的猫鼬模式的ObjectId引用。然而,每次我对应该发送回我的空间和其中的帖子的路线提出GET请求时,我都会得到一个严重的错误。此外,我的帖子没有填充我的空间。 错误:CastError:对于模型“space”的路径

  • 我正在用node/express/mongo/mongoose构建一个应用程序。我遇到了一个我似乎无法理解的错误,谷歌搜索到目前为止没有任何帮助。 我创建了一个简单的、以猫为主题的示例来重现我遇到的错误。我基本上是通过ObjectId检索一个对象。我正在使用创建对象时自动生成的对象id(作为字符串)。 当我导航到路径localhost:3000/kitty/586d62878fc14d30e0ac