我们的堆栈目前使用 mongoose 作为 ODBM,我想知道我究竟应该如何实现 RESTFUL 请求来确定是否填充外键(即外键 _id 属性被整个文档或部分文档替换)来自另一个集合的文档)。
我知道我可以发送类似的东西
?populate=CollectionName&populateFields=fieldsnames`
通过查询字符串,但对我来说这似乎很老套,我想知道在这种情况下什么是标准/最佳实践
最佳答案
MongoDb 没有连接。如果关联的数据足够小,那么建议嵌入文档。 如果采用该方法,则可以执行这个简单的查询来检查嵌入的文档字段是否为文档。
0 < db.products.count({_id : 3, rebateProgram : { $type : 3} })
在 Mongoose 中,我认为是
0 < productModel.find({}).where({_id : 3, rebateProgram : { $type : 3} }).count()
rebateProgram : {$type : 3}
表示仅匹配带有嵌入式文档的 rebateProgram 字段。
3是嵌入文档的BSON类型。
REST 风格的网址
检查文档 a 属性的 restful url 可能如下所示。
请求将是 GET,因为您正在检索一个值而不是修改任何数据。
GET: /??/:collectionName/:documentId/action
示例:
要求:
GET: /api/products/3/status?hasObject=rebateProgram
响应:
{
id: 3,
hasObject : { rebateProgram : true },
success : true,
errMsg : ""
}
但是,如果它始终是您要检查的同一个字段,那么请在响应中包含嵌入字段的状态。 像这样。 示例:
要求:
GET: /api/products/3/status
响应:
{
id: 3,
hasValidRebateProgram : true,
success : true,
errMsg : ""
}
更多信息:
- 文档:BSON spec
关于mongodb - 如何通过查询字符串 Restfully 实现连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28181507/