gpt4 book ai didi

node.js - 使用 Nodejs 显示产品的多个图像中的图像

转载 作者:太空宇宙 更新时间:2023-11-04 03:00:09 25 4
gpt4 key购买 nike

我是 Node.js 新手,正在从事一个电子商务项目,其中有两个不同的产品模型和图像模型。

product.js模型

const mongoose = require('mongoose');

const Schema = mongoose.Schema;

const productSchema = new Schema({
title: {
type: String,
required: true
},
price: {
type: Number,
required: true
},
description: {
type: String,
required: true
},
userId: {
type: Schema.Types.ObjectId,
ref: 'User',
required: true
}
});

module.exports = mongoose.model('Product', productSchema);

image.js模型

const mongoose = require('mongoose');

const Schema = mongoose.Schema;

const imageSchema = new Schema({
imageUrl: {
type: String,
required: true
},
productId: {
type: Schema.Types.ObjectId,
ref: 'Product',
required: true
}
});


module.exports = mongoose.model('Image', imageSchema);

Image.js 模型中,单个产品有多个图像保存图像和产品后,我想在多张图像中显示产品的单个图​​像。这是我的 Controller

exports.getProducts = (req, res, next) => {
let imagesArr = [];
Product.find({ userId: req.user._id })
.then(products => {
for (product of products){
Image.find({productId: product._id})
.then(images => {
imagesArr.push(images[0]);
})
.catch(err => {
console.log(err);
});
}
console.log("Choosed Images", imagesArr);
})
.then(result => {
return res.render('admin/products', {
pageTitle: 'Admin Product',
path: '/admin/products',
editing: editMode,
product: product,
images:imagesArr,
hasError: false,
errorMessage: null,
validationErrors: []
});
})
.catch(err => {
const error = new Error(err);
error.httpStatusCode = 500;
return next(error);
});

};

不幸的是,imageArr 正在变得空。我明白是因为异步变得空了。请建议我如何实现这一点。我是 Nodejs 新手

最佳答案

您可以通过更简洁的方式实现这一点,而不是回调 hell 。尝试以下 Controller :

exports.getProducts = async (req, res, next) => {
try{
let imagesArr = [];
let products = await Product.find({ userId: req.user._id });

for (product of products){
let images = await Image.find({productId: product._id})
if(images && images.length >0) imagesArr.push(images[0]);
}


console.log("Choosed Images", imagesArr);

return res.render('admin/products', {
pageTitle: 'Admin Product',
path: '/admin/products',
editing: editMode,
product: product,
images: imagesArr,
hasError: false,
errorMessage: null,
validationErrors: []
});
}catch(err){
const error = new Error(err);
error.httpStatusCode = 500;
return next(error);
}
};

希望这对您有用。

关于node.js - 使用 Nodejs 显示产品的多个图像中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59745985/

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