Das Problem ist, dass ich nicht weiß, ob etwas mit der Art und Weise, wie ich die Daten in den Beitrag einfüge, nicht stimmt oder ob das Problem an der HTML-Syntax der Objekteigenschaften liegt, auf die ich auf das Array zugreifen möchte.
Dies ist mein Modell und ich möchte einen Wert in „cantidad“ des Arrays „MaterialesProductos“ einfügen.
const mongoose = require('mongoose') const Schema = mongoose.Schema; const bodyParser = require('body-parser') const ProductoSchema = new Schema({ IdProducto:{type:String}, MaterialesProductos:[{nombre:{type:String},cantidad:{type:Number}}], precio:{type:Number}, image:{type:String}, nombre:{type:String}, descripcion:{type:String}, }); const Producto = mongoose.model('Producto',ProductoSchema); module.exports = Producto;
Das ist mein Beitrag, ich verwende „req.body“, um alle Daten einzufügen. Löschen Sie immer das Array.
const Producto = require('../models/Productos.js') const fileUpload = require('express-fileupload') const path = require('path') module.exports = (req,res)=>{ console.log(req.body) let image = req.files.image; image.mv(path.resolve(__dirname,'..','public/img',image.name),async (error)=>{ await Producto.create({ ...req.body, image: '/img/' + image.name }) res.redirect('/AgregarProductos') }) }
Ich habe versucht, MaterialesProductos[].cantidad oder MaterialesProductos[][cantidad] usw. zu verwenden, aber ich kann den Wert nicht einfügen.
<div class="control-group"> <div class="form-group floating-label-form-group controls"> <input type="button" name="abrirse" id="open" value="Agregar materiales"> <div id="popup" style="display: none;"> <div class="content-pop"> <div><a href="#" id="close">X</a></div> <% for (var a = 0; a < materiales.length; a++) { %> <div> <%=materiales[a].Descripcion%> <input type="number" value="0" name="MaterialesProductos.cantidad" min="0"> </div> <% } %> </div> </div> </div> </div>
嗯,我研究了一下,没有找到解决方案。所以我必须手动完成。
使用
MaterialesProductos[nombre]
(可以是任何内容),我使用req.body.MaterialesProductos[nombre]
获取数组中的值,我可以访问它。 使用$push
(我无法插入或创建它,所以我只能updateOne
)我首先创建文档,然后在更新它后添加包含两个对象的数组。类似这样的事情: