【发布时间】:2015-10-18 07:19:06
【问题描述】:
我在后端使用带有 Node.js 的 MongoDB,在前端使用 Backone。骨干模型具有唯一的 ID(cid 和 idAttribute),可以识别后端的模型。但是据我所知,Backbone 集合没有具有唯一标识符,这就是我提出以下文本其余部分中出现的问题的原因之一:
在 MongoDB 中,集合的名称为字符串,表示它们的唯一标识符。将 MongoDB 中的集合字符串名称与前端 Backbone 集合的某种唯一字符串名称匹配的最佳方法是什么?
Backbone 集合是否有某种唯一标识符?创建一个的最佳方法是什么?
我问的原因是因为通常我们使用集合的 URL 属性将 Backbone 集合与后端匹配。但是,我开始在我的应用程序中加入套接字(socket.io)。它是这样的:我有一个辅助服务器(与应用程序服务器分开),它监听 MongoDB oplog。在 oplog 中发生插入/更新/删除事件时,辅助服务器会向我的前端发送一条带有 BSON/JSON 信息的套接字消息,其中包含:<dbname>.<collectionname>。比如:mainDB.users_collection
所以在我的前端,我需要将 Backbone 集合与 MongoDB 集合的文字字符串表示相匹配。现在,我可以在 Backbone 集合上设置一个属性,比如“uniqueName”,但我想知道是否有更好的做法。以前有人这样做过,我想向他们学习。好伤心。
【问题讨论】:
-
每个 MongoDB 集合不是只有一个
Backbone.Collection吗?并且尝试使用cid来识别服务器端的模型并不能很好地工作,所以不要考虑它。 -
我没有使用 cid 的任何东西,只是使用 MondoDB _id 的。但问题依然存在。是的,或多或少,前端 Backbone 集合和 MongoDB 集合之间的比例是 1:1。
-
那么为您的 Backbone 集合使用名称有什么问题?
whatever = Backbone.Collection.extend({ ... })之类的? -
我想你明白我的观点,模型有 cid/id,但集合没有。我只是在寻找关于如何为集合创建唯一标识符的最佳实践?
-
我用过的大多数 Backbone 集合都只有变量——它们的名称是它们的唯一 ID。您是否试图拥有一个集合或类似变量名不足的集合?如果是这样,您也许可以定义一个模型类型,该模型类型包含一个集合,该集合的 id 具有正确的名称。
标签: javascript node.js mongodb backbone.js