Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   не обновляет весь массив (https://javascript.ru/forum/misc/76094-ne-obnovlyaet-ves-massiv.html)

J_ss 04.12.2018 15:30

не обновляет весь массив
 
подскажите пожалуйста, как можно обновить весь массив?
у меня почему то находит и обновляет только первую запись

var i = -1;
i++;
var arr = vm.priceRecoms.data[[i]];
console.log(arr);

DataFactory.partnerRecomPrice.updatePartnerRecomPriceArray({
	price: arr.recomPrice.deduction,
	realizationId: arr.id,
	organizationId: vm.org.id,
	id: arr.partnerRecomPrice.id
}).$promise.then(function(response){
}).catch(function(err){
});


если не использовать [[i]], массив выводит весь, но не находит и не обновляет записи в partnerRecomPrice
console.log(arr);
Код:

arr: Object
        id: 1170
        label: "Товар"
        partnerRecomPrice:
                createdAt: "2018-11-28T15:15:19.757Z"
                id: 1
                organizationId: 8
                price: 215
                realizationId: 1170
                updatedAt: "2018-12-04T11:54:00.000Z"
                __proto__: Object
        recomPrice:
                createdAt: "2018-11-22T15:04:58.670Z"
                deduction: 211
                id: 1
                price: 360
                realizationId: 1170
                updatedAt: "2018-12-04T11:56:08.000Z"
                __proto__: Object
        typeId: 1
        updated: 1
        updatedAt: "2018-12-04T07:12:40.000Z"
        __proto__: Object

метод в контроллере
updatePartnerRecomPriceArray: function (req, res) {
	var realizationId = req.param('realizationId');
	var organizationId = req.param('organizationId');
	var price = req.param('price');

	PartnerRecomPrice.findAll({
		where: {
			organizationId: organizationId,
			realizationId: realizationId,
			price: price,
		}
	}).then(function(matchRecords){
		if (!matchRecords) {
			return req.context.create(PartnerRecomPrice, {
				organizationId: organizationId,
				realizationId: realizationId,
				price: price,
			})
		} else {
			return req.context.update(PartnerRecomPrice, {price: price}, {
				where: {id: matchRecords.id}
			});
		}
	}).then(function(response){
		res.ok();
	}).catch(function(err){
		res.serverError(err);
	})
},

SuperZen 04.12.2018 15:39

они заменяют дефолтный промис на блюберд чтобы был forEach, последняя ссылка тоже интересная

https://gist.github.com/jagged3dge/1ae038cf050662986121

https://stackoverflow.com/questions/...ult-set-hapijs

https://github.com/sequelize/sequelize/issues/1501

J_ss 05.12.2018 09:08

Цитата:

Сообщение от SuperZen (Сообщение 499745)
они заменяют дефолтный промис на блюберд чтобы был forEach

не могу разобраться с ним, покажите пожалуйста на моем примере

SuperZen 05.12.2018 12:17

Пример получился такой:

index.js
var Sequelize = require('sequelize')

var sequelize = new Sequelize('product', null, null, {
  dialect: "sqlite",
  storage: './product.sqlite',
})

var Product = sequelize.define('Product', {
  owner_id: Sequelize.STRING,
  name: Sequelize.STRING,
  price: Sequelize.INTEGER
})

sequelize
  .sync({ force: true })
  .then(function (err) {
    const owner_id = 1
    Product.bulkCreate([
      {
        owner_id: 1,
        name: 'one',
        price: 100
      },
      {
        owner_id: 1,
        name: 'one',
        price: 200
      }
    ]).then(() => {
      return Product.update({ price: 300 }, { where: { owner_id: 1 } })
      // хз тут возможно нужно делать транзакцию, если идти этим путем
      // Product.findAll({ where: owner_id }).then(products => {
      //   products.forEach(product => {
      //     product.price = 300
      //     product.save()
      //   })
      // })
    }).spread((affectedCount, affectedRows) => {
      return Product.findAll()
    }).then(products => {
      console.log(products)
    })
  }, function (err) {
    console.log('An error occurred while creating the table:', err)
  })


package.json
{
  "name": "sequelize_findAll_update",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "dependencies": {
    "sequelize": "^4.41.2",
    "sqlite3": "^4.0.4"
  }
}


Часовой пояс GMT +3, время: 12:41.