Проблема классическая в отношениях разработчика и JS - смена контекста объекта класса от места вызова.
Чтобы заставить JS использовать только контекст объекта, нужно использовать стрелочный синтаксис для методов:
class DeviceController {
getItems = async (query) => {
let { brandId, typeId, limit, page, } = req.query
page = page || 1
limit = limit || 9
let offset = page * limit - limit
let devices;
if (!brandId && !typeId) {
devices = await Product.findAndCountAll({ limit, offset })
}
return devices
};
getAllForClient = async (req,res) => {
let newList=[]
let devices=await this.getItems(req.query)
for (let index = 0; index < devices.length; index++) {
let newItem={
name:devices[index].name,
price:devices[index].price,
videoUrl:devices[idnex].videourl
}
newList.push(newItem)
}
return res.json(newList)
}
}
PS: В дострелочные времена нужно было убедиться, что this это тот самый this в конструкторе класса и передавать в другую переменную класса, например в that, чтобы потом использовать во всех методах.