Wie füge ich einen Wert in eine Objekteigenschaft eines Arrays ein?
P粉718730956
P粉718730956 2024-02-26 17:17:47
0
1
377

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>

P粉718730956
P粉718730956

Antworte allen(1)
P粉563831052

嗯,我研究了一下,没有找到解决方案。所以我必须手动完成。

使用 MaterialesProductos[nombre] (可以是任何内容),我使用 req.body.MaterialesProductos[nombre] 获取数组中的值,我可以访问它。 使用 $push (我无法插入或创建它,所以我只能 updateOne)我首先创建文档,然后在更新它后添加包含两个对象的数组。

类似这样的事情:

const Producto = require('../models/Productos.js')
const fileUpload = require('express-fileupload')
const path = require('path')

module.exports = (req, res) => {
  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
  })
  for (a=0; a

并且工作了。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage