Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.12.2018, 15:30
Интересующийся
Отправить личное сообщение для J_ss Посмотреть профиль Найти все сообщения от J_ss
 
Регистрация: 31.07.2018
Сообщений: 12

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

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);
	})
},

Последний раз редактировалось J_ss, 05.12.2018 в 07:57.
Ответить с цитированием
  #2 (permalink)  
Старый 04.12.2018, 15:39
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

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

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

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

https://github.com/sequelize/sequelize/issues/1501
Ответить с цитированием
  #3 (permalink)  
Старый 05.12.2018, 09:08
Интересующийся
Отправить личное сообщение для J_ss Посмотреть профиль Найти все сообщения от J_ss
 
Регистрация: 31.07.2018
Сообщений: 12

Сообщение от SuperZen Посмотреть сообщение
они заменяют дефолтный промис на блюберд чтобы был forEach
не могу разобраться с ним, покажите пожалуйста на моем примере
Ответить с цитированием
  #4 (permalink)  
Старый 05.12.2018, 12:17
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

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

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"
  }
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление объекта в массив в цикле Dark19 Элементы интерфейса 3 11.12.2016 23:11
Пустой массив при сохранении в localStorage kichkun Общие вопросы Javascript 3 19.11.2016 14:33
Чтение данных из файла в массив TheSingleElk Общие вопросы Javascript 2 16.06.2016 01:09
Как обнулить весь массив? Urukhay Общие вопросы Javascript 7 04.08.2014 10:14
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14