2016-07-31 97 views
0

我在兩個表(產品和服務)之間建立了多對多關係,它通過連接表與成本列product_service關聯。當我創建嘗試向產品添加服務時,即使數據庫已更新,第一次調用也不會返回更新後的值,但我知道,因爲我檢查了它,只能在我的應用程序中查看更新後的值另一個電話。NodeJS Sequelize:關聯設置值的問題

var query = { 
    where: { 
     id: req.params.id 
    }, 
    include: defaultIncludes() 
    } 
    models.products.findOne(query) 
    .then(function (product) { 
    if (!product) { 
     return res.status(404).json({message: 'Product not found' }); 
    } else { 
     this.product = product; 
     return models.services.findById(req.body.service_id); 
    } 
    }) 
    .then(function (service) { 
    return this.product.addServices(service); 
    }) 
    .then(function (result) { 
    return this.product.save(); 
    // return models.products.findOne(query); 
    }) 
    .then(function (product) { 
    return res.status(200).json(product) 
    }) 
    .catch(function (err) { 
    logger.error(err); 
    return res.status(500).json({error: err.message}); 
    }); 

我認爲它可能與承諾,addServices或保存功能,但我似乎無法弄清楚。

回答

1

首先,您不需要在product.addServices(service)之後致電product.save()。然後,這2個函數不會傳遞更新的實例作爲回調函數的第一個參數。

所以,你的情況你可以做到以下幾點:

... 
.then(function (service) { 
    return this.product.addServices(service); 
}) 
.then(function() { 
    return res.status(200).json(this.product) 
}) 
.catch(function (err) { 
    logger.error(err); 
    return res.status(500).json({error: err.message}); 
});