在 Mongoose Schema 中保存 ObjectId 数组
Save array of ObjectId's using Mongoose's Schema
我有一个像这样的 Mongoose 模式:
const Role = new Schema({
guildID: {
type: Schema.Types.ObjectId,
ref: 'guilds',
required: true
},
roles: {
owner: {
id: {
type: Number,
required: false
},
commands: [[Schema.Types.ObjectId]]
}
}
})
还有一个测试是否按要求保存数据的小函数,其中包含:
const roleTest = new Role({
guildID: "61a679e18d84bff40c2f88fd",
roles: {
owner: {
id: 123456789
},
commands: [
"61af57d828b9fd5a07dbdcba",
"61af5a6728b9fd5a07dbdcbb",
"61af5ab728b9fd5a07dbdcbc"
]
}
})
roleTest.save((err, doc) => {
if (err) return res.sendStatus(500)
console.log('Done')
})
它正确地保存了除了数组 ObjectIds(命令)之外的所有内容。这里出了什么问题?
您已经在带有嵌套数组的架构中编写了 commands
。尝试使用单个数组:
{
commands: [Schema.Types.ObjectId],
}
试试这个:
commands: [
{ type: mongoose.Schema.Types.ObjectId }
]
我有一个像这样的 Mongoose 模式:
const Role = new Schema({
guildID: {
type: Schema.Types.ObjectId,
ref: 'guilds',
required: true
},
roles: {
owner: {
id: {
type: Number,
required: false
},
commands: [[Schema.Types.ObjectId]]
}
}
})
还有一个测试是否按要求保存数据的小函数,其中包含:
const roleTest = new Role({
guildID: "61a679e18d84bff40c2f88fd",
roles: {
owner: {
id: 123456789
},
commands: [
"61af57d828b9fd5a07dbdcba",
"61af5a6728b9fd5a07dbdcbb",
"61af5ab728b9fd5a07dbdcbc"
]
}
})
roleTest.save((err, doc) => {
if (err) return res.sendStatus(500)
console.log('Done')
})
它正确地保存了除了数组 ObjectIds(命令)之外的所有内容。这里出了什么问题?
您已经在带有嵌套数组的架构中编写了 commands
。尝试使用单个数组:
{
commands: [Schema.Types.ObjectId],
}
试试这个:
commands: [
{ type: mongoose.Schema.Types.ObjectId }
]