这是我在这里的第一个问题,所以在这里:)
我正在使用带有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'}
换句话说:是否应在服务器端填充/解析引用的字段,还是应该由客户端填写?
谢谢和欢呼!
答案 0 :(得分:0)
我的两分钱:
ObjectId
是数据库的人工制品,而不是应用程序的人工制品。向用户展示这些有时(并非总是)是一种气味。是否属于您和您对该领域的了解。
就最好的情况而言,这取决于您的使用案例。是否存在用户只想知道ID的用例?我想他们至少会想要一个或另一个。如果是这种情况,那么我将实现两个资源,一个用于获取源,另一个用于获取目标。
如果用户总是想要两者,或者想要两者都想要两者,则返回两者,或者再次添加另一个提供此功能的资源。
如果你确实都返回了两个,那么你将过滤什么?某种标识符,分页还是只返回数据库中的所有内容?