如何在Mongoose Schema中为Key字段设置任意类型?
Mongoose 实现任意类型字段的方案
要让Key字段支持任意类型(字符串、数字、对象等),直接使用Mongoose提供的Schema.Types.Mixed类型即可,它专门用于表示无固定类型的字段。
修改后的Schema定义
var data = new Schema({ Plan: String, Key: Schema.Types.Mixed, // 支持任意类型赋值 Uses: Number, UsesLeft: Number, AddedOn: Date });
使用示例
创建文档时可以给Key赋任意类型的值:
// Key为字符串 const stringKeyDoc = new DataModel({ Plan: "Basic", Key: "user_001", Uses: 20, UsesLeft: 20, AddedOn: new Date() }); // Key为数字 const numberKeyDoc = new DataModel({ Plan: "Standard", Key: 10001, Uses: 50, UsesLeft: 50, AddedOn: new Date() }); // Key为对象 const objectKeyDoc = new DataModel({ Plan: "Enterprise", Key: { uid: "admin", token: "abcxyz" }, Uses: 100, UsesLeft: 100, AddedOn: new Date() });
注意事项
由于Mixed类型不会自动检测字段的类型变化,当你修改Key的类型时,需要手动调用markModified()方法通知Mongoose,否则修改不会被保存:
// 修改Key的类型为数组 objectKeyDoc.Key = [1, 2, 3]; objectKeyDoc.markModified('Key'); // 标记字段已修改 await objectKeyDoc.save();
内容的提问来源于stack exchange,提问作者FattyDev1
相关产品推荐
相关产品推荐

