NodeJS/Mongoose ObjectId 的架构数组
NodeJS/Mongoose schema array of ObjectId
我正在尝试在 Mongoose 的模式中实现一个 ObjectId 数组。
我在互联网上搜索了一下,我发现这应该有效:
import mongoose from 'mongoose';
import Schema from 'mongoose';
const UserSchema = mongoose.Schema({
nickName: {
type: String,
unique: true,
required: true,
},
follows: [{
type: Schema.Types.ObjectId, //HERE
ref: 'User',
default: []
}],
}, {
strict: true,
});
const User = mongoose.model('User', UserSchema);
export default User;
或这个
follows: {
type: [Schema.Types.ObjectId], // HERE
ref: 'User',
default: []
},
我知道它们并不完全相同,但我没有在这两种情况下工作,而是遇到了这个错误:
Invalid schema configuration: `ObjectID` is not a valid type within the array `follows`.
我不知道他为什么告诉我 ObjectID(大写 "ID")无效,因为我没有声明任何东西。
如何做一个 objectId 数组?
我想要一个 ObjectId 数组,通过引用模式 "User" 以及用户关注的人
[编辑]
正如 Bhanu Sengar 在评论中提到的那样,我不得不在架构之前放置 "mongoose"。
[{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }]
正如 Halil SAFAK 所说,我删除了默认值。
它也没有用,因为我在两个导入之间有冲突
import mongoose from 'mongoose';
import Schema from 'mongoose';
其实错误不在ObjectId,而在你的配置。你在'follows'中定义了objectId,然后你写了数组作为默认值,但这实际上不是ObjectId类型的对象类型,所以这里就报错了。如下定义你不会有问题。
follows: [{
type: Schema.Types.ObjectId, //HERE
ref: 'User'
}],
或
follows: [Schema.Types.ObjectId],
在这两个定义中,MongoDB 填充查询将起作用。
我使用过 mongooose Populate 属性 检查我的代码。
这将帮助您理解。
类别架构
const mongoose = require('mongoose');
const timestamps = require('mongoose-timestamp');
const cateorySchema = new mongoose.Schema({
category_name: {
type: String,
trim: true,
required: true,
},
active: {
type: Boolean,
default: true,
}
});
cateorySchema.plugin(timestamps); // automatically adds createdAt and updatedAt timestamps
module.exports = mongoose.model('Category',cateorySchema);
子类别架构
'use strict'
const mongoose = require('mongoose');
const timestamps = require('mongoose-timestamp');
const subCategorySchema = new mongoose.Schema({
categories:{ type: mongoose.Schema.Types.ObjectId, ref: 'Category' },
subcategorytitle:{
type:String,
trim:true,
required: true
},
active: {
type: Boolean,
default: true
}
});
subCategorySchema.plugin(timestamps); // automatically adds createdAt and updatedAt timestamps
module.exports = mongoose.model('Subcategory',subCategorySchema);
希望对您有所帮助。如果您有任何疑问,请告诉我。
我正在尝试在 Mongoose 的模式中实现一个 ObjectId 数组。 我在互联网上搜索了一下,我发现这应该有效:
import mongoose from 'mongoose';
import Schema from 'mongoose';
const UserSchema = mongoose.Schema({
nickName: {
type: String,
unique: true,
required: true,
},
follows: [{
type: Schema.Types.ObjectId, //HERE
ref: 'User',
default: []
}],
}, {
strict: true,
});
const User = mongoose.model('User', UserSchema);
export default User;
或这个
follows: {
type: [Schema.Types.ObjectId], // HERE
ref: 'User',
default: []
},
我知道它们并不完全相同,但我没有在这两种情况下工作,而是遇到了这个错误:
Invalid schema configuration: `ObjectID` is not a valid type within the array `follows`.
我不知道他为什么告诉我 ObjectID(大写 "ID")无效,因为我没有声明任何东西。
如何做一个 objectId 数组? 我想要一个 ObjectId 数组,通过引用模式 "User" 以及用户关注的人
[编辑] 正如 Bhanu Sengar 在评论中提到的那样,我不得不在架构之前放置 "mongoose"。
[{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }]
正如 Halil SAFAK 所说,我删除了默认值。
它也没有用,因为我在两个导入之间有冲突
import mongoose from 'mongoose';
import Schema from 'mongoose';
其实错误不在ObjectId,而在你的配置。你在'follows'中定义了objectId,然后你写了数组作为默认值,但这实际上不是ObjectId类型的对象类型,所以这里就报错了。如下定义你不会有问题。
follows: [{
type: Schema.Types.ObjectId, //HERE
ref: 'User'
}],
或
follows: [Schema.Types.ObjectId],
在这两个定义中,MongoDB 填充查询将起作用。
我使用过 mongooose Populate 属性 检查我的代码。 这将帮助您理解。
类别架构
const mongoose = require('mongoose');
const timestamps = require('mongoose-timestamp');
const cateorySchema = new mongoose.Schema({
category_name: {
type: String,
trim: true,
required: true,
},
active: {
type: Boolean,
default: true,
}
});
cateorySchema.plugin(timestamps); // automatically adds createdAt and updatedAt timestamps
module.exports = mongoose.model('Category',cateorySchema);
子类别架构
'use strict'
const mongoose = require('mongoose');
const timestamps = require('mongoose-timestamp');
const subCategorySchema = new mongoose.Schema({
categories:{ type: mongoose.Schema.Types.ObjectId, ref: 'Category' },
subcategorytitle:{
type:String,
trim:true,
required: true
},
active: {
type: Boolean,
default: true
}
});
subCategorySchema.plugin(timestamps); // automatically adds createdAt and updatedAt timestamps
module.exports = mongoose.model('Subcategory',subCategorySchema);
希望对您有所帮助。如果您有任何疑问,请告诉我。