我在节点js服务器上使用Ember数据;模型看起来很简单:
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()返回的promise。then(),其中id为null);我怎么能得到它?
更新
节点服务器,使用express:
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';
但在Ember,正在做
product.save().then(function(savedProduct) {
console.log(savedProduct.get('name'));
}
我得到名字的总和值,而不是我预期的'aaa'......
第二次更新: 做在Ember
product.save().then(function(savedProduct) {
console.log(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”是我在应用程序的插入表单中键入的值
答案 0 :(得分:3)
如果返回JSON,则应更新记录。
product.save().then(function(record){ //record is the same as product here
console.log(record.get('id'));
});