根据以下架构:
const mongoose = require('mongoose')
var schema = new mongoose.Schema({
user: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
unique: true,
required: true
},
files: {
type: [mongoose.Schema.Types.ObjectId],
ref: 'File',
required: true
}
}, { timestamps: true })
module.exports = mongoose.model('Model', schema);
我创建了一个文件文档,我试图获取其ID并将其推入文件数组。这是我已经尝试过的方法(不起作用):
Model.findOneAndUpdate(
{ user: user._id },
{ $push: { files: file._id } },
{ upsert: true, new: true, runValidators: true }
)
我还检查了file._id
是否不是null / undefined,并且那里有一个ObjectId:
{
"model": {
"files": [],
"_id": "5f90c117624d199c9c7984af",
"user": "5f31d5fe37d233f359d82f5a",
"__v": 0,
"createdAt": "2020-10-21T23:15:35.025Z",
"updatedAt": "2020-10-22T07:16:53.843Z"
}
}
如何将文件ID插入文件数组?
编辑:运行此命令后,我看到了数据库,并且看到ObjectId推送了该数组,但我不能在输出中看到它。
我该如何解决?
答案 0 :(得分:2)
文件的架构不正确
files: {
type: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'File'
}],
required: true
}
或者不需要:
files: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'File'
}]
详细了解猫鼬填充主题:https://mongoosejs.com/docs/populate.html