抱歉,如果这个问题很明显,但我似乎找不到足够的文档。我可能缺乏关于宁静方法的知识。如何存储具有关系的记录?
我有一个地方。我想存储用户发布到这个地方的帖子。所以一个地方可以有很多帖子。一个帖子属于一个地方。
我正在使用 Aqueduct 3.0 预发布版。
我有以下型号:
地点.dart
class Place extends ManagedObject<_Place> implements _Place {}
class _Place {
@primaryKey
int id;
@Column(unique: true)
String name;
ManagedSet<Post> posts;
}
post.dart
import 'package:places_api/model/place.dart';
import 'package:places_api/places_api.dart';
class Post extends ManagedObject<_Post> implements _Post {}
class _Post {
@primaryKey
int id;
@Column()
String text;
@Relate(#posts)
Place place;
}
我尝试保存帖子,但只能存储地点对象,而不是地点 ID。显然,下面的 post 查询不起作用,因为只有 values.place 对象,而不是 values.place_id 属性。是否打算加载该地点,然后将所有帖子存储到该地点?
同样没有关系,我无法存储 place_id,因为 Aqueduct 似乎将 _ 视为特殊的东西。我不能使用带有下划线的数据库属性吗?
有什么例子可以解释这一点吗?
@Operation.post()
Future<Response> createPost() async {
final body = request.body.asMap();
final query = new Query<Post>(context)
..values.place_id = body['place_id']
..values.text = body['text'];
final insertedPost = await query.insert();
return new Response.ok(insertedPost);
}
目前我将以下正文作为 POST 发送:
{
"place_id": 1,
"text": "My post here"
}
到以下网址:http://localhost:8888/posts
发送这样的东西会更好吗?
{
"text": "My post here"
}
到 URL:http://localhost:8888/place/1/posts
然后先获取地点,然后将帖子存储到它?