- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
按照本 MEAN App repo 中的说明逐步安装 resourcejs。 , 当我访问 URL http://localhost:3000/movie/584c6f00cf996a9956784807 时收到以下消息:
{"status":500,"message":"Cast to ObjectId failed for value \"584dd2842a056e4a648751b5\" at path \"_id\" for model \"movie\"","errors":{}}
POST 请求也有效,但 PUT 和 DELETE 无效。
index.js
var express = require('express');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var methodOverride = require('method-override');
var _ = require('lodash');
var app = express();
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
app.use(methodOverride('X-HTTP-Method-Override'));
// CORS Support
app.use(function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
next();
});
mongoose.connect('mongodb://localhost/meanapp');
mongoose.connection.once('open', function() {
// Load the models.
app.models = require('./models/index');
var routes = require('./routes');
var numberOfRoutes = 1;
_.each(routes, function(controller, route) {
app.use(route, controller(app, route));
});
app.listen(3000);
});
MovieController.js
var Resource = require('resourcejs');
module.exports = function(app, route) {
// Setup the controller for REST;
Resource(app, '', route, app.models.movie).rest();
// Return middleware.
return function(req, res, next) {
next();
};
};
电影模型看起来就像this , 正在服务 this way .
我的兴趣点是 ResourceJS 有以下代码,它似乎无法将 ID 正确解析为 MongoDB ObjectID:
/**
* Register the GET method for this resource.
*/
get: function(options) {
(…)
var search = {'_id': req.params[this.name + 'Id']};
(…)
}
什么可能把事情搞砸了?
统计Windows 10 — 64 位操作系统,基于 x64 的处理器MongoDB v3.2.7,64 位 Node JS v4.4.7 Mongoose v4.7.6
最佳答案
因为 mongoose 需要 ObjectId
但您将 string
作为 _id
传递,所以您应该对其进行类型转换。
试试这个:
var
mongoose = require('mongoose');
ObjectId = mongoose.Schema.Types.ObjectId;
/**
* Register the GET method for this resource.
*/
get: function(options) {
(…)
var param = req.param[this.name + 'Id'];
var search = {'_id': new ObjectId(param)};
(…)
}
如果您需要适用于任何版本的 Mongoose 和 Mongo 的通用解决方案,只需将 _id
字段定义为字符串并使用 uuid.v4
生成唯一值:
var uuid = require('uuid');
var mongoose = require('mongoose');
// Create the MovieSchema.
var MovieSchema = new mongoose.Schema({
_id: {
type: String,
index: { unique: true },
default: uuid.v4
},
title: {
type: String,
required: true
},
url: {
type: String,
required: true
}
});
// Export the model.
module.exports = mongoose.model('movie', MovieSchema);
所以在这种情况下,您的 ResourceJS 将保持原样并正常工作:
get: function(options) {
(…)
var search = {'_id': req.param[this.name + 'Id']};
(…)
}
附言不要忘记安装 uuid 包:
npm i --save uuid
关于node.js - 500 错误 : Cast to ObjectId failed for value at path \"_id\" for Mongoose model using ResourceJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41474589/
假设我在文件开头有这个定义: const ObjectId = mongoose.Types.ObjectId; 您更喜欢哪一个,为什么? // 1 new ObjectId; // 2 new O
我通过以下两种不同的方法生成了一个 ObjectId: user@ubuntu:~$ python Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24)
我编写了一个 Python 代码,用于从名为 Tweets 的 Mongo 集合中获取推文。我不想只获取对象文本并添加一个名为 Sentiment 的附加对象。 当我循环推文并将 json 对象解析为
我是 Node.js 和 mongodb 的新手。 在我的 Node.js 应用程序中,我使用的是 mongodb,对于 mongodb 操作,我使用的是 mongoose。 在 package.js
使用 parse.com 和 JavaScript SDK。 这就是我想要实现的目标。 页面上将用户( friend )列表返回给用户,然后他们可以单击其中一个用户,页面将更新以列出所有该用户的项目(
我有一个像这样的 objectId:["56153e4c2040efa61b4e267f","56033932efefe0d8657bbd9e"]为了在我的模型中保存该信息,我使用: items: [
我有一个标签模式: const TagSchema = new Schema({ label: {type: String, unique: true, minlength: 2}, upda
在online API他们指的是 Mongo::ObjectID。 我有 require 'mongo' 但 ruby 仍然找不到它。例如,我需要通过它的 Id 找到一个对象,我正在做: mong
作为管道的最后阶段,我有一个像这样的 $project : { ... anId : new ObjectId() } 但是 mongo 为每个文档生成相同的 Id。我希望它为每个投影文档生成
我需要在这样的数组中找到 mongoose objectID 的索引: [ { _id: 58676b0a27b3782b92066ab6, score: 0 }, { _id: 58676aca
我们可以从客户端生成 ObjectId 并在插入时使用它。我确实希望它在插入过程之外进行处理。我需要将其配置为我的默认 _id 生成过程,以便当我调用 insert 时,insert 方法应该创建自定
这是代码。跟随者和追随者无法工作。换句话说,我无法将像 {"user1", objectId1} 这样的对象推送到这两个数组。是否允许有一个字段同时包含对象 ID 和字符串名称?感谢您的帮助。 The
为什么 Meteor.js 使用它自己的 IDsp 算法> 为什么不使用 MongoDB ObjectId()? 最佳答案 如果你选择使用 Meteor,它对对象 ID 使用相同的方法: Meteor
Mongoose 菜鸟问题:我有两个 Mongoose ObjectId 对象列表,我将它们合并为一个。有些 ObjectId 是重复的,我不想将它们保存到我的数据库中。是否有 Mongoose 工具
以下代码从供应商集合中的员工数组中提取员工 await new VendorManager() .update( { emplo
我有一个简单的模型对象: class UserRating include MongoMapper::EmbeddedDocument key :idea_id, ObjectId key
谁能告诉我使用 #[objectId] 或 [id=objectId] 引用元素有什么区别? 最佳答案 第一个非常快,因为 jQuery 内部使用 getElementById当它识别出模式时(使用正
我的架构是: var schema = new Schema({ players: { type: [Schema.Types.ObjectId]}); 我正在使用 promi
这似乎是这样定义我的架构: var PossessionSchema = new mongoose.Schema({ thing: {type: mongoose.Schema.Types.Obj
我想要解决的是:使用建议的方法(mapReduce)保留 $in 中的 Id 数组的顺序: Does MongoDB's $in clause guarantee order 我已经完成了我的作业,发
我是一名优秀的程序员,十分优秀!