猫鼬:转换为ObjectId失败

阿昔芬

我试图在MongoDB中创建类别的层次结构,以通过Mongoose与Node.js一起使用。我正在使用“祖先数组”方法(http://docs.mongodb.org/manual/tutorial/model-tree-structures-with-ancestors-array/),并且已经将层次结构保存在数据库中。直接来自Mongo的元素如下所示:

{ 
    "_id" : "Football", 
    "ancestors" : [ 
        "Categories",  
        "Sports and fitness" 
     ],
     "parent" : "Sports and fitness" 
}

我已经为类别创建了一个模型和控制器,并且到目前为止,在查询数据库时遇到了问题。

这是model / Category.js中的代码:

var mongoose = require('mongoose');

var Category = mongoose.Schema({
    _id: String
});

var categorySchema = mongoose.Schema({
    ancestors: [Category],
    parent: [Category]
});


//  Initiate database connection
var db = mongoose.createConnection('mongodb://localhost/Categories');
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
  console.log("openDB categories");
});

module.exports.category = db.model('Category', categorySchema);

这是控制器:

var categoryModel = require('../models/Category');
var Category = categoryModel.category;

exports.getAncestors = function(req, res) {
    if (req.params.id == undefined){res.send("no id specified!"); return;}

    Category.findOne({_id: 'Football'}, 'ancestors', function(err, ancestors){
        if(err) console.log(err);

        res.send(ancestors);
    });
}

运行此代码时,我收到以下错误消息:

{ message: 'Cast to ObjectId failed for value "Football" at path "_id"',
  name: 'CastError',
  type: 'ObjectId',
  value: 'Football',
  path: '_id' }

我相信问题可能出在猫鼬架构上,但是所有帮助都将不胜感激。非常感谢!

尼尔·伦恩(Neil Lunn)

猫鼬默认情况下会尝试设置一个ObjectId。您可以使用以下方法抑制这种情况:

var categorySchema = mongoose.Schema({
    _id: String,
    ancestors: [{type: String }],
    parent: {type: String}
},{ _id: false });

var Category = mongoose.model( "Category", categorySchema );

请注意,只有一种架构可供您布局。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

猫鼬强制转换为ObjectId的值失败

在路径“ _id”中,值XXX的猫鼬错误强制转换为ObjectId失败?

在猫鼬4.6.0中将字符串转换为ObjectId失败

猫鼬:转换为值[{“ someKey”:“ someValue”}]的对象数组失败

带有自己的ObjectId抛出的猫鼬自我参考:强制转换为ObjectId

具有参考数组的猫鼬模型架构:CastError:转换为ObjectId失败,原因是值[[“ 5f09b ....,5f0d ....”]“

具有参考数组的猫鼬模型架构:CastError:值“ [object Object]”的强制转换为ObjectId

CastError:Cast to ObjectId 的值在 NodeJs 猫鼬中失败

ValidationError:转换为ObjectID失败

转换为 [ObjectId] 的值失败

CastError:尝试保存在猫鼬中时,转换为undefined_method错误失败

猫鼬-在路径上值“ [object Object]”的转换为数字失败

猫鼬CastError:在路径“ apps”中,值“ [object Object]”的强制转换为未定义失败

猫鼬:CastError:在路径“ items”的值“ {value:'x'}”的转换为嵌入失败

Node JS:如何在猫鼬中修复验证失败转换为数组

UnhandledPromiseRejectionWarning:CastError:对猫鼬的值转换为字符串失败

将猫鼬流转换为数组

用objectId保存猫鼬

猫鼬-ObjectID作为键?

Mongoose - 转换为 ObjectId 失败,多个 ID

对于值 xxx,转换为 objectId 失败

CastError:强制转换为ObjectId的值失败

强制转换为 ObjectID 的值失败

将猫鼬返回的数据转换为json

猫鼬:以没有任何ObjectId的猫鼬填充

ValidationError:猫鼬验证失败

猫鼬从数组中拉ObjectId

节点/猫鼬-从数组中删除ObjectId

如何用猫鼬生成ObjectId?