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
我已经更新了节点服务器详细信息的问题...... –