我正在用typescript和mongodb(使用mongose(开发一个聊天系统创建新消息时,我收到以下错误:
E11000重复密钥错误集合:test.messages索引:user.username_1重复密钥:{user.username:null}
我在消息集合中为用户使用引用,我不明白这个错误是从哪里来的。
架构:
const user = new Schema({
username: { type: String, unique: true, required: true },
email: { type: String, unique: true, required: true },
password: { type: String, required: true}
});
const message = new Schema({
userId: { type: Schema.Types.ObjectId, ref: 'user', required: true},
message: { type: String, required: true},
timestamp: { type: Date, default: Date.now }
});
export const User = model('User', user);
export const Message = model('Message', message);
user.ts(模型文件(
export class MUser {
readonly _id: string;
readonly username: string;
readonly email: string;
readonly password: string;
}
message.ts(模型文件(
export class MMessage {
readonly userId: string;
readonly message: string;
readonly timestamp: Date;
}
我用来创建文档并返回错误的函数:
async createMessage(user: MUser, msg: string) {
await Message.create({userId: user._id, message: msg});
}
我不认为userId
是唯一的。我在这里错过了什么?
谢谢!
删除集合并尝试使用新的架构,它应该可以工作。