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」是我在插入表單上鍵入應用
但我怎麼知道它何時更新? –
一旦承諾解決,記錄已更新。 – Kingpin2k
我已經更新了節點服務器詳細信息的問題...... –