配列のオブジェクトプロパティに値を挿入するにはどうすればよいですか?
P粉718730956
P粉718730956 2024-02-26 17:17:47
0
1
374

問題は、投稿にデータを挿入する方法に問題があるのか​​、それとも配列にアクセスしようとしているオブジェクト プロパティの HTML 構文に問題があるのか​​がわかりません。 .

これは私のモデルで、「materialesProductos」配列の「cantidad」に値を挿入したいと考えています。

const マングース = require('マングース')
const スキーマ = mongoose.Schema;
const bodyParser = require('body-parser')

const ProductoSchema = 新しいスキーマ({

IdProducto:{type:String}、
材料製品:[{nombre:{type:String},cantidad:{type:Number}}],
プレシオ:{タイプ:数値}、
画像:{タイプ:文字列}、
名前:{タイプ:文字列}、
説明:{タイプ:文字列}、

});

const Producto = mongoose.model('Producto',ProductoSchema);
module.exports = 製品;

これは私の投稿です。「req.body」を使用してすべてのデータを挿入します。必ず配列をクリアしてください。

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

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({
    ...必須本文、
    画像: '/img/' image.name

    
    })


    res.redirect('/AgregarProductos')
    })
    }

MaterialsesProductos[].cantidad や MaterialsProductos[][cantidad] などを使用してみましたが、値を挿入できません。

<div class="コントロールグループ">
                    <div class="フォームグループフローティングラベルフォームグループコントロール">
               <input type="button" name="abrirse" id="open" value="Agregar マテリアル">
                     <div id="ポップアップ" style="表示: なし;">

                        <div class="コンテンツポップ">
                            <div><a href="#" id="close">X</a></div>

                            <% for (var a = 0; a 
<div>
<%=materiales[a].説明%>
<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 しかできません) を使用して、まずドキュメントを作成し、更新後に 2 つのオブジェクトを含む配列を追加します。

次のようなもの:

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

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,
    画像: '/img/' image.name
  })
  for (a=0; a

そしてそれはうまくいきました。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート