【问题标题】:mongoose cast error with _id_id 的 mongoose cast 错误
【发布时间】:2014-03-06 04:22:52
【问题描述】:

我想保存一个新用户并添加一些组作为参考。 该组是从数据库中加载的。

var userSchema = new Schema({
    email: {type: String, 'default': '', index: {unique: true, dropDups: true}},
    password: String,
    accessToken: String,
    registerDate: { type: Date, 'default': Date.now},
    groups: [{type: ObjectId, ref:'Group'}]
});


var groupSchema = new Schema({
    name: {type: String, 'default': '', index: {unique: true, dropDups: true}}
});


exports.register = function(req, res, next){
    var userToRegister = req.body;
    var newUser = new User();
    Group.find({name:"User"}, function(err, group){
        if(err){
            res.send("no User-group found");
        }
        newUser.set('groups', [group]);
        newUser.set('email', userToRegister.email);
        newUser.set('password', userToRegister.password);
        newUser.save(function(err){
            if(err){
                res.end("error at saving user", 500);
            }
            res.end(JSON.stringify(newUser));
        });

    });
};

但我收到以下错误:

message "Cast to ObjectId failed for value "{ _id: 52f6b49e13bdfa901b5a64d3, __v: 0, name... (length: 108)" 
name    "CastError" 
path    "groups"    
stack   undefined   
type    "ObjectId"  

正如我所见,它是一个有效的 ObjectId。那么错误可能在哪里?


解决方案:

使用:Group.findOne(...) 或:newUser.set('groups', [group[0]]);

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    .find 返回数组。使用 group[0] 或使用 findOne()。

    newUser.set('groups', [group[0]]);

    【讨论】:

    • 当我使用 new User({... groups:[userGroup], ...});有用吗?
    • 我从数据库加载的组
    • ref 在 mongoose 中的工作方式类似于 sql 表连接。您将另一个集合的 id 存储在一个集合中。您需要做的就是存储组 ID。
    • 当我想设置我得到的 id 时:Cast to non_object_property_load 在路径“groups”处的值“”失败。但组不为空。它是:{_id:52f6b49e13bdfa901b5a64d3,__v:0,名称:'用户'}
    • 可能是因为没有名为“用户”Group.find({name:"User"} 的组。启动 mongo 控制台并在那里检查您的查询 - db.Group.find({name:"User"})
    猜你喜欢
    • 2013-02-03
    • 2019-04-15
    • 1970-01-01
    • 2015-04-24
    • 2015-06-16
    • 2017-02-06
    • 2015-04-24
    • 2019-01-13
    相关资源
    最近更新 更多