通过REST API处理集合关系的最佳实践是什么?

时间:2016-03-31 17:47:51

标签: android node.js mongodb express

这是我在这里的第一个问题,所以在这里:)

我正在使用带有MongoDB数据库支持的Node.js Express后端的Android开发消息传递应用程序。我目前有2个收集模型:用户消息,其中消息架构如下所示:

var messageSchema = mongoose.Schema({
  source: {type: Schema.Types.ObjectId, ref: 'User', required: true},
  destination: {type: Schema.Types.ObjectId, ref: 'User', required: true},
  text: {type: String, required: true}
});

我的问题是我是否应该通过API返回消息对象:

{source: <objectId>, destination: <ObjectId>, text: 'Hello World'}

或作为:

{source: {username:'David', password:'abcd'}, destination: {username:'Jeff', password: 'aaaa'}, text: 'Hello World'}

换句话说:是否应在服务器端填充/解析引用的字段,还是应该由客户端填写?

谢谢和欢呼!

1 个答案:

答案 0 :(得分:0)

我的两分钱:

ObjectId是数据库的人工制品,而不是应用程序的人工制品。向用户展示这些有时(并非总是)是一种气味。是否属于您和您对该领域的了解。

就最好的情况而言,这取决于您的使用案例。是否存在用户只想知道ID的用例?我想他们至少会想要一个或另一个。如果是这种情况,那么我将实现两个资源,一个用于获取源,另一个用于获取目标。

如果用户总是想要两者,或者想要两者都想要两者,则返回两者,或者再次添加另一个提供此功能的资源。

如果你确实都返回了两个,那么你将过滤什么?某种标识符,分页还是只返回数据库中的所有内容?

相关问题