【发布时间】:2022-03-25 02:31:32
【问题描述】:
我有两个模式用户和消息。当我尝试插入消息模式时,它会引发主题错误。我的期望是它应该在消息模式中添加用户的 _Id,但我无法弄清楚。我不知道它会抛出验证错误。 这是我的用户架构:
var mongoose = require('mongoose')
var UserSchema = new mongoose.Schema({
userId: { type: String, createIndexes: { unique: true, required: true, trim: true } },
imagePath: String,
name: {
first: String,
middle: String,
last: String,
},
mobileNumber: String,
onlineStatus: {
type: String,
default: 'Online'
},
accountStatus: {
type: String,
default: 'Active'
},
lastSeen: Date,
socketId: String,
pushToken: String,
country: String,
city: String,
ipAddress: String,
timeZong: String,
continent: String,
createdAt: {
type: Date,
default: Date.now
},
lastUpdated: {
type: Date,
default: Date.now
}
});
UserSchema.pre('save', function (next) {
if (!this.createdAt) {
this.createdAt = new Date().now;
}
if (!this.accountStatus) {
this.accountStatus = "Active";
}
next();
});
module.exports = mongoose.model('Users', UserSchema)
这是消息架构
let mongoose = require('mongoose')
let userSchema = new mongoose.Schema({
message: String,
messageTo:
{
type: mongoose.Schema.Types.ObjectId,
ref: "Users",
required: 'To id cannot be empty',
},
messageFrom:
{
type: mongoose.Schema.Types.ObjectId,
ref: "Users",
required: 'From id cannot be empty',
},
messageRead: { type: Number, default: 0 },
receiverDeleted: { type: Number, default: 0 },
senderDeleted: { type: Number, default: 0 },
sendDate: {
type: Date,
default: Date.now()
},
receivedDate: Date
})
module.exports = mongoose.model('Messages', userSchema)
这就是我尝试插入的方式。
var message = new ModelMessages();
message.message = params.message;
message.messageTo = params.messageTo;
message.messageFrom = params.messageFrom;
message.save((err, doc) => {
if (err) {
logger.error(`Unable to send IM. ${err} Stacktrace: ${err.stack}`);
} else if (doc) {
logger.info(`Sending message to recievers.`);
}
});
【问题讨论】:
标签: node.js mongodb mongoose mongoose-schema