Javascript 余烬数据中的对象
这已经被问了好几次了,但是这些例子并没有起到很大的作用 我想在我的服务器上发布“posts”,所以我有一个“posts”模型,然后是一个“single”模型。“posts”模型代表所有的posts,然后我的“single”模型代表每个post需要什么。。。我是新加入Ember.js的,在这里我真的需要帮忙/指导 因此,当我提交表单(用于创建新帖子)时: “职位”模式:Javascript 余烬数据中的对象,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,这已经被问了好几次了,但是这些例子并没有起到很大的作用 我想在我的服务器上发布“posts”,所以我有一个“posts”模型,然后是一个“single”模型。“posts”模型代表所有的posts,然后我的“single”模型代表每个post需要什么。。。我是新加入Ember.js的,在这里我真的需要帮忙/指导 因此,当我提交表单(用于创建新帖子)时: “职位”模式: import DS from 'ember-data'; export default DS.Model.extend({
import DS from 'ember-data';
export default DS.Model.extend({
posts: DS.hasMany('single'),
});
“单一”模式:
从“余烬数据”导入DS
export default DS.Model.extend({
title: DS.attr('string'),
content: DS.attr('string'),
});
然后我的序列化程序将两者连接在一起
import DS from 'ember-data';
export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
posts: { embedded: 'always' }
}
});
目前,这是输出的错误:
断言失败:hasMany关系的所有元素都必须是DS.Model的实例,您传递了[[object]]
简而言之:我需要创建能够表示以下JSON结构的数据模型:
{
"posts": [
{ "title": "Title", "content": "Content" }
]
}
谢谢 这个错误实际上是在说到底出了什么问题 断言失败:hasMany关系的所有元素都必须是DS.Model的实例,您传递了[[object]] 模型
posts
与模型single
有多个关系。
您的代码所做的是传递一个普通的JS对象,而不是模型
const data = {
"posts": [
{ // <-
"title": title, // <-
"content": content // <- this is a POJO
} // <-
]
};
我相信这是可行的,但是我的服务器抛出了一个400错误;这让我觉得内容的格式不正确。。{“errors”:[{“post”:[“必须是对象”]},{“post.title”:[“必须是字符串”]},{“post.content”:[“必须是字符串”]}]}“引导我思考”并没有给我任何有用的信息来帮助。您应该检查网络并实际查看发送的内容以及错误发生的确切位置(服务器和/或客户端上的代码)。一个想法是,发送时没有正确序列化内容。检查posts.toJSON()返回的内容。
const data = {
"posts": [
{ // <-
"title": title, // <-
"content": content // <- this is a POJO
} // <-
]
};
// create 'posts' and 'single' separately
const posts = this.store.createRecord('posts');
const single = this.store.createRecord('single', {
title,
content
});
// link them up
posts.get('posts').addObject(single);