gpt4 book ai didi

node.js - Mongoose 通过id方法删除子文档

转载 作者:可可西里 更新时间:2023-11-01 09:54:59 25 4
gpt4 key购买 nike

我有两个模型:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var ProjectSchema = new Schema({
title: { type: String },
images: [{
type: Schema.Types.ObjectId,
ref: 'Image'
}]
});
module.exports = mongoose.model('Project', ProjectSchema);

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var ImageSchema = new Schema({
fileName: { type: String },
fileSize: { type: Number }
});
module.exports = mongoose.model('Image', ImageSchema);

现有项目填充图片如下:

Project.findById(req.params.project_id, function(err, project) {
if (err) { res.status(400).send(err); }

var image = new Image({
fileName: req.file.name,
fileSize: req.file.size
});

image.save(function(err) {
if (err) { res.status(400).send(err); }

project.images.push(image);
project.save();
);
});

从项目中获取图片没有问题:

Project.findById(req.params.project_id)
.populate('images')
.exec(function(err, project) {
if (err) { res.status(400).send(err); }

res.status(200).json(project.images);
});

我尝试使用 Mongoose 文档从故事中删除图像: http://mongoosejs.com/docs/subdocs.html http://mongoosejs.com/docs/api.html#types_documentarray_MongooseDocumentArray.id

Project
.findById(req.params.project_id)
.populate('images')
.exec(function(err, project) {
if (err) { res.status(400).send(err); }

project.images.id(req.params.image_id).remove();
project.save();
});

但我不断收到错误:

/api-server/app/admin/images/index.js:170
project.images.id(req.params.image_id).remove();
^
TypeError: project.images.id is not a function

我在这里搜索了解决方案,但我只从 2013 年的 $pull 上得到了一些东西。.id() 方法是否损坏,或者我做错了什么。由于我对 Mongoose 还很陌生,有什么方法可以做得更好吗?

最佳答案

您只需要从数据库中删除图像。希望以下代码对您有所帮助。

Project
.findById(req.params.project_id)
.exec(function(err, project) {
if (err) { res.status(400).send(err); }
project.save();
Image.remove({"_id":project.images._id},function(){})
});

关于node.js - Mongoose 通过id方法删除子文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35296268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com