[英]Adding an object to an array in a sub-document in mongoose, mongodb. Property 'messages` could not be found
I have four models: teacher
, student
, teacherMessageSchema
, studentMessageSchema
.我有四个模型: teacher
、 student
、 teacherMessageSchema
、 studentMessageSchema
。 teacherMessageSchema
is a subdocument in the 'teacher model in the
messages: [teacherMessageSchema] property, and
studentMessageSchema is a subdocument in the
student model in the
messages: [studentMessageSchema] property. How to add an object to arrays
teacherMessageSchema
是 messages: [teacherMessageSchema] 属性中'teacher model in the
子文档:[teacherMessageSchema] property, and
studentMessageSchema is a subdocument in the
消息中学生model in the
的子文档:[studentMessageSchema] property. How to add an object to arrays
property. How to add an object to arrays
[teacherMessageSchema] and
[studentMessageSchema]`. property. How to add an object to arrays
[teacherMessageSchema] and
[studentMessageSchema]`。 I tried to do this like this:我试着这样做:
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');
});
});
}
But the property messages
cannot be found.但是找不到属性messages
。
teacher and student model师生model
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
}
message model消息 model
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
}
controller message controller 消息
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');
});
});
}
before push msg
you must to create message model, after that push it to user.messages
在推送msg
之前,您必须创建消息 model,然后将其推送到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');
});
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.