2016-11-05 96 views
1

當我檢查ember inspector中的數據時,我看到多個記錄與id(int)和一個沒有id(null)的記錄。Ember data createRecord創建多條記錄

使用燼2.9.1

save: function(){ 
    var title = this.get('title'); 
    this.store.createRecord('post',{ title:title }).save(); 
    this.setProperties({ title:''}); 
    this.transitionToRoute('posts'); 
} 

節點後端

router.post('/', function(req, res, next) { 
    post.create({ 
    title: req.body.data.attributes.title 
    }).then(function() { 
    res.set('Content-Type','application/vnd.api+json'); 
    return res.send({ 
     "msg": "post created successfully", 
     data:null 
    }); 
    }); 
}); 

回答

0
return res.status(201).send({ 
    data:{ 
    type:'post', 
    attributes:{ 
     id:post.id, 
     name:post.title 
    } 
    } 
}); 

以下代碼正常工作。這是一個已知的issue中的燼數據。

0

我很驚訝地看到在數據存儲後從該操作的ID。您應該返回(假設RestAdapter)

router.post('/', function(req, res, next) { 
    post.create({ 
    title: req.body.data.attributes.title 
    }).then(function (post) { 
    res.set('Content-Type','application/vnd.api+json'); 
    return res.status(201).json(post); 
    }); 
}); 

這將返回一個包含了ID,這反過來將相應地更新存儲創建的帖子記錄。

我懷疑空ID是來自當前的保存,並且帶有ID的記錄來自以前的保存?

+1

仍然是同樣的問題。沒有工作。我認爲這是一個已知問題https://github.com/emberjs/data/issues/4421 – zerocon

+0

啊,有趣。在這種情況下,您應該能夠通過this.store.createRecord('post',{title:title})。save()。then(()=> {this.setProperties({標題:''}); this.transitionToRoute('posts');} – JonRed

+0

有點驚訝這個答案沒有工作,因爲它會返回模型的id。顯然它不是JSONAPI,但如前所述,應該與RestAdapter一起工作。 – JonRed