Вставить несколько строк в Adonisjs не работает - PullRequest
0 голосов
/ 20 октября 2019

У меня проблема при вставке многорядной строки с помощью adonisjs. У меня есть данные формы в массиве json, когда я пытаюсь вставить эти данные, используя request.post, чтобы получить индекс массива, это не работает

это мой пример данных в массиве json:

[
    {
        "id_cart" : "1",
        "id_product" : "1",
        "shop_id" : "2",
        "price" : "10000"
    },
    {
        "id_cart" : "1",
        "id_product" : "2",
        "shop_id" : "3",
        "price" : "20000"
    }
]

И тогда это мой контроллер:

const id_cart = nanoid(25)

const detailInfo = request.post(['id_cart','id_product','shop_id','price'])
const detail = new Detail()

detail.id_cart = id_cart
detail.id_product = detailInfo.id_product
detail.shop_id = detailInfo.shop_id
detail.price = detailInfo.price

await detail.save()

Результат столбца id_product, shop_id, and price равен null . Что не так с моим кодом?

Ответы [ 2 ]

1 голос
/ 22 октября 2019

Отформатируйте JSON, например,

{
    "products": [
        {
            "id_cart": "1",
            "id_product": "1",
            "shop_id": "2",
            "price": "10000"
        },
        {
            "id_cart": "1",
            "id_product": "2",
            "shop_id": "3",
            "price": "20000"
        }
    ]
}

Вставьте в базу данных следующим образом:

const productList = request.input("products");
await Product.createMany(productList);
0 голосов
/ 20 октября 2019

Результат столбца id_product, shop_id и price равен нулю. Что не так с моим кодом?

Потому что у результата есть несколько объектов.

Вы можете использовать Сбор запросов :

// Example from official documentation
const users = request.collect(['username', 'age'])

// output
[{ username: 'virk', age: 26 }, { username: 'nikk', age: 25 }]

// save to db
await User.createMany(users)

ИЛИ

Получить полный результат и обработать его с помощью цикла

const detailInfo = request.all() //Array

и создайте foreach

detailInfo.rows.forEach(async (info) => {
    ...
})
...