ValidationError: user: сбой приведения к Embedded для значения "[]" - PullRequest
0 голосов
/ 02 февраля 2020

Я пытаюсь вставить новое сообщение в базу данных, используя expressjs и mon goose.

Но в процессе я получаю ошибку ValidationError. На консоли выводится следующее:

ошибка при сохранении сообщения ::: ValidationError: user: Ошибка приведения к 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);

Что вызывает эту ошибку и как ее исправить?

...