Comment insérer une valeur dans une propriété objet d'un tableau ?
P粉718730956
P粉718730956 2024-02-26 17:17:47
0
1
352

Le problème est que je ne sais pas s'il y a quelque chose qui ne va pas dans la façon dont j'insère les données dans la publication, ou si le problème vient de la syntaxe HTML des propriétés de l'objet dans lequel j'essaie d'accéder au tableau.

C'est mon modèle et je souhaite insérer une valeur dans "cantidad" du tableau "MaterialesProductos".

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;

Ceci est mon message, j'utilise "req.body" pour insérer toutes les données. Effacez toujours le tableau.

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')
    })
    }

J'ai essayé d'utiliser MaterialesProductos[].cantidad ou MaterialesProductos[][cantidad] etc. mais je ne parviens pas à insérer la valeur.

<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

répondre à tous(1)
P粉563831052

Eh bien, j'ai fait quelques recherches et je n'ai pas trouvé de solution. Je dois donc le faire manuellement.

En utilisant MaterialesProductos[nombre] (可以是任何内容),我使用 req.body.MaterialesProductos[nombre] pour obtenir la valeur dans le tableau, je peux y accéder. En utilisant $push (我无法插入或创建它,所以我只能 updateOne) Je crée d'abord le document, puis après l'avoir mis à jour, j'ajoute un tableau contenant les deux objets.

Des choses comme ça :

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

Et ça a marché.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal