2016-10-19 5 views
0

更新の前にsequelizeインスタンスを変数に保存しようとしています。しかし、更新後、古い変数も新しいsequelizeインスタンスに更新されます。これにより、前後の変数 'oldRequest'の.descriptionが異なります。Sequelize update事前に初期化された変数を変更します

var oldRequest = request; // HUGE BUG HERE, OLD REQUEST IS ALSO MODIFIED AS REQUEST IS MODIFIED 
     console.log("before " + oldRequest.description); 
     attributes.lastUpdater = req.user.get('firstName') + " " + req.user.get('lastName'); 
     request.update(attributes).then(function(updatedRequest) { 
      console.log("after " + oldRequest.description); 
      send_update_email(oldRequest ,updatedRequest, req.user.get('email')).then(function() { 

答えて

0

問題はoldRequestが本当にちょうど同じオブジェクトrequestを参照されています。あなたはdescriptionクローンを使用して、このような何かをしようとオフに保存する必要がある場合はJavascript pointer/reference craziness. Can someone explain this?

:深さ、について説明のため、この質問を参照してください(詳細については、この回答を参照してください:Cloning an Object in Node.js

var extend = require('util')._extend; 
var oldRequest = extend({}, request); 
... 
関連する問題