2014-03-25 73 views
1

我使用Ember數據與節點js服務器;該模式看起來很簡單:保存模型後獲取服務器的答案

Gmcontrolpanel.Product = DS.Model.extend({ 
name: DS.attr('string'), 
description: DS.attr('string'), 
}); 

一旦節點服務器收到的product.save(),它堅持在MySQL數據庫中的記錄,管理記錄ID和答案是這樣的:

{ 
    product 
     { 
     id: 1, 
     name: "aaa", 
     description "bbb" 
     } 
} 

我需要得到服務器響應的id(不是由save()。then(),其中id爲null)返回的promise。我怎麼才能得到它?

更新:

節點服務器,使用快遞:

GMserver.post('/products', function (req, res) { 
    rootName = "product"; 
    queryString = 'INSERT INTO products (id, name, descriptions) VALUES ('+ counters.prodcuts +', "' + req.body.product.name + '", "' + req.body.product.description + '")'; 
    executeQuery(req, res, queryString); 
    responseToPost(counters.products, req.body.product, rootName, res); 

    counters.products++; 
}); 

function executeQuery (req, res, querystring) { 
    connection.query(queryString, function(err, rows, fields){ 
     if (err) throw err; 
    }); 
} 

function responseToPost (id, data, rootName, res) { 
    var result = new Object(); 
    result[rootName] = new Object(); 
    var i = 0; 
    var answer; 

    result[rootName].id = id; 
    for(var key in data) 
    { 
     result[rootName][key] = data[key]; 
    } 

    answer = JSON.stringify(result, null, '\t'); 

    console.log(answer); 
    res.send(answer); 
} 

我可以通過日誌的答案在這裏看到,這個問題的答案是一個上面寫的; 我試圖改變responseToPost總是發送一個靜態值是這樣的:

result[rootName][key] = 'aaa'; 

但在灰燼,做

product.save().then(function(savedProduct) { 
    console.log(savedProduct.get('name')); 
} 

我得到的名字的sumbmitted價值,而不是「AAA」如我所料。 ..

第二次更新: 在做灰燼

product.save().then(function(savedProduct) { 
    console.log(savedProduct); 
} 

看什麼savedProduct是,在Chrome中我看到日誌的結果:

Class {id: null, store: Class, container: Container, currentState: (...), errors: Class…} 
__ember1395755543625: "ember548" 
__ember1395755543625_meta: Object 
__nextSuper: undefined 
_attributes: Object 
_changesToSync: Object 
_data: Object 
    __ember1395755543625_meta: Meta 
    _super: function superFunction(){ 
    name: "asdf" 
    description: "asdfa" 
    __proto__: Object 
_deferredTriggers: Array[0] 
_inFlightAttributes: Object 
_relationships: Object 
_suspendedRelationships: false 
_updatingRecordArraysLater: false 
container: Container 
currentState: (...) 
get currentState: function() { 
set currentState: function (value) { 
data: (...) 
errors: Class 
id: null 
isError: false 
store: Class 
toString: function() { return ret; } 
__proto__: Object 

其中「ASDF」和「asdfa」是我在插入表單上鍵入應用

回答

2

記錄的值應該更新,如果這是返回的JSON。

product.save().then(function(record){ //record is the same as product here 
    console.log(record.get('id')); 
}); 
+0

但我怎麼知道它何時更新? –

+0

一旦承諾解決,記錄已更新。 – Kingpin2k

+0

我已經更新了節點服務器詳細信息的問題...... –

相關問題