首页 > 解决方案 > ValidationError: user: Cast to Embedded 值“[]”失败

问题描述

我正在尝试使用 expressjs 和猫鼬将新消息插入数据库。

但是我在这个过程中得到了一个 ValidationError 。在控制台打印以下内容。

存储消息时出错 ::: ValidationError: user: Cast to Embedded 路径“user”处的值“[]”失败

代码如下:

socketAPI.io.on('connection', function(socket){
  socket.on('chat-sent', function(param) {
    ChatUser.find({username : param.username}).then(async (usr)=>{
      if(usr){
        try{
          var mess = new GroupMessage();
          mess.group =  (await Group.findOne({name : groupName}));
          mess.message = param.message;
          mess.user = usr;
          mess.save((err)=>{
            if(err){
              console.log('error while storing message ::: '+err);
            }
            else{
              console.log('message succesfully stored');
            }
          });
        }catch(err){
          console.log('error collecting group ::: '+err);
        }
      }
    });
    socket.emit('group-message-handled', { user : param.username, message : param.message});
  });
});

插入代码使用以下模型:

var userSchema = new mgoose.Schema({
    username : {
        type : String,
        required : true,
        unique : true,
        maxlength : [15, 'Too long username. Max 15 allowed']
    },
    name : String
});

var groupSchema = new mgoose.Schema({
    name : {
        type : String,
        required : true,
        unique : true
    },
    categories : [String]
});

var groupMessageSchema = new mgoose.Schema({
    user : userSchema,
    group : groupSchema,
    message : {
        type : String,
        required : true,
        minlength : 1
    }
});

var ChatUser = mgoose.model('ChatUser', userSchema);
var Group = mgoose.model('Group', groupSchema);
var GroupMessage = mgoose.model('GroupMessage', groupMessageSchema);

是什么导致了这个错误,我该如何解决?

标签: mongodbexpressmongoosesocket.iomongoose-schema

解决方案


推荐阅读