如何將值插入數組的物件屬性?
P粉718730956
P粉718730956 2024-02-26 17:17:47
0
1
351

問題是,我不知道在帖子中插入資料的方式是否有問題,或者問題是否出在我嘗試訪問數組的物件屬性的 HTML 語法上.

這是我的模型,我想在「MaterialesProductos」陣列的「cantidad」中插入一個值。

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;

這是我的帖子,我用「req.body」插入所有資料。始終將數組清空。

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

我已經嘗試過使用 MaterialesProductos[].cantidad 或 MaterialesProductos[][cantidad] 等,但我無法插入該值。

<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

全部回覆(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

並且工作了。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板