在mongoose中的子文档mongodb中将对象添加到数组中。找不到属性“消息”

茵宝

我有四个型号:teacher studentteacherMessageSchemastudentMessageSchemateacherMessageSchema是“教师 model in the消息:[teacherMessageSchema] property, andstudentMessageSchemais a subdocument in the学生 model in the消息:[studentMessageSchema] property. How to add an object to arrays[teacherMessageSchema] and[studentMessageSchema]”中的子文档我试图这样做:

module.exports.sendMessage = (req, res) => {
    
    let {sender, receiver, msg} = req.body;
    var hex = /[0-9A-Fa-f]{6}/g;

    sender = (hex.test(sender))? mongoose.Types.ObjectId(sender) : sender;
    receiver = (hex.test(receiver))? mongoose.Types.ObjectId(receiver) : receiver;

    Teacher.findById({_id: receiver}, function(err, member) {
        console.log(member, 'member');

        member.messages.push({msg});

        console.log('messages', member.messages)
        
        member.save(function(err, updated) {
            if (err)
                res.send(err);
    
            res.json(updated, 'updated');
        });
    });
}

但是messages找不到该属性

师生模型

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const crypto = require('crypto');
const {studentMessageSchema, teacherMessageSchema} = require('./message');


const userSchema = new Schema({
    name: {
        type: String,
        trim: true,
        required: true,
        maxLength: 32
    },
    email: {
        type: String,
        unique: true,
        trim: true,
        required: true,
        lowercase: true
    }
}, {timestamps: true});


const studentSchema = userSchema.clone();
studentSchema.add({
    messages : [studentMessageSchema]
});

const teacherSchema = userSchema.clone();
teacherSchema.add({
    messages : [teacherMessageSchema]
});



const User =  mongoose.model('User', userSchema);
const Student = mongoose.model('Student', studentSchema);
const Teacher = mongoose.model('Teacher', teacherSchema);

module.exports = {
    User,
    Student,
    Teacher
}

讯息模型

const mongoose = require('mongoose');
const Schema = mongoose.Schema;


const messageSchema = new Schema({
    "contentInfo" : {
        "viewed" : {type: Boolean, default: false},
        "msg" : {type: String, required: true},
        "createdAt" : { type : Date, default: Date.now }
    }
});

const studentMessageSchema = messageSchema.clone();
studentMessageSchema.add({
    "receiver" : {
        type: Schema.ObjectId
    }
});

const teacherMessageSchema = messageSchema.clone();
teacherMessageSchema.add({
    "sender" : {
        type: Schema.ObjectId
    }
});


module.exports = {
    messageSchema,
    teacherMessageSchema,
    studentMessageSchema
}

控制器消息

const User = require('../models/user');
const Student = require('../models/user');
const Teacher = require('../models/user');
const mongoose = require('mongoose');

module.exports.sendMessage = (req, res) => {
    
    let {sender, receiver, msg} = req.body;
    var hex = /[0-9A-Fa-f]{6}/g;

    sender = (hex.test(sender))? mongoose.Types.ObjectId(sender) : sender;
    receiver = (hex.test(receiver))? mongoose.Types.ObjectId(receiver) : receiver;

    Teacher.findById({_id: receiver}, function(err, member) {
        console.log(member, 'member');

        member.messages.push({msg});

        console.log('messages', member.messages)
        
        member.save(function(err, updated) {
            if (err)
                res.send(err);
    
            res.json(updated, 'updated');
        });
    });
}
穆罕默德·亚瑟·艾哈迈迪

在推送之前,msg您必须先创建消息模型,然后再将其推送到user.messages

let {studentMessageSchema}= require("path of messeages Schema/")


module.exports.sendMessage = (req, res) => {
    
    let {sender, receiver, msg} = req.body;
    var hex = /[0-9A-Fa-f]{6}/g;
    sender = (hex.test(sender))? mongoose.Types.ObjectId(sender) : sender;
    receiver = (hex.test(receiver))? mongoose.Types.ObjectId(receiver) : receiver;

     //create a studentMessage Model
    let studentMessage =  new studentMessageSchema({
      contentInfo : {
          msg : msg
       },
      receiver : receiver
     })


    Teacher.findById({_id: receiver}, function(err, member) {
        console.log(member, 'member');

        member.messages.push({studentMessage });

        console.log('messages', member.messages)
        
        member.save(function(err, updated) {
            if (err)
                res.send(err);
    
            res.json(updated, 'updated');
        });
    });
}

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在TypeScript中将对象添加到函数中的数组

如何在JavaScript中将对象属性添加到数组中?

PHP - 将对象添加到子数组中

将对象添加到数组中并更改该数组中其他对象的属性

将对象添加到子数组

如何将对象添加到firebase中的文档

使用 mongoose 将对象附加到 mongoDB 中的对象数组

如何使用Java在MongoDB中将子文档(如果不存在)添加到数组字段中?

将对象属性添加到JSON对象中

如何在反应js中将对象添加到具有钩子状态的数组中

将对象添加到预分配的对象数组中

将对象数组添加到单个数组中

使用useReducer将对象添加到数组中的数组

使用redux将对象添加到数组中的数组

如何在MongoDB中将子文档添加到子文档数组

将对象从测试文件添加到类中的数组?

将对象添加到数组,然后在表中显示

将对象添加到打字稿中的数组

反应:将对象添加到数组中

将对象的值添加到数组的每个元素中

通过Java中的循环将对象添加到数组

将对象添加到构造函数中的数组

将对象添加到服务中的数组

将元素添加到嵌入在 MongoDB 中的子文档中的数组

Mongodb:使用 node.js mongoose 将新数据对象添加到对象数组中

添加到关系后在coredata中找不到对象

在动作分派中将键属性添加到对象数组中的每个对象

在MongoDB中将数据添加到数组中的数组

将对象的属性值添加到对象数组