recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment insérer une valeur dans une propriété objet d'un tableau ?

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粉718730956P粉718730956274 Il y a quelques jours357

répondre à tous(1)je répondrai

  • P粉563831052

    P粉5638310522024-02-27 12:49:23

    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é.

    répondre
    0
  • Annulerrépondre