最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何处理mongodbexpress中的拖放列表? [关闭]

运维笔记admin23浏览0评论

如何处理mongodb / express中的拖放列表? [关闭]

如何处理mongodb / express中的拖放列表? [关闭]

我正在构建一个类似于spa的看板,其用户板包含列表,列表包含所有具有拖放功能的卡,前端使用vue.js,后端使用带有mongoose的express.js。

我目前仍然坚持如何设置我的模型并正确排序。

任何人都可以给我一个3个简单的猫鼬模型的例子,一个板,一个列表和一个卡,可以用于列表和卡的拖放功能,以及排序,路线也很棒?

如果我应该使用嵌入或引用,我完全迷失了,我已经尝试了两种方式,但它似乎并不正确。

编辑:

我知道trello / wakan / kanbanflow是如何做到的,我知道websockets的方式,但是现在我只需要一个非常简单的基本设置,而不需要实时更新。

从我收集的东西 -

电路板模型 - 包含具有用户ID的成员数组列表模型 - 包含电路板ID和列表(refs或嵌入式?),或者只是电路板ID?卡片型号 - 包含电路板ID和列表ID?

我如何查询卡片以查看棋盘视图,因为它们必须位于自己受尊重的列表中?

我通过id得到一个板,然后使用聚合和查找/填充板列表,然后对于每个列表我应该查找/填充卡?听起来像很多查询,但效率不高?

对于董事会我只需要添加成员,更改标题。

对于列表 - 我需要能够重新排序并更改标题。

对于卡片 - 这里有很多东西:标题,描述,卡片成员,活动,评论等。我想我会使用引用的活动,评论,卡片成员等,但我主要关心的是如何处理重新排序并通过拖放创建/删除卡/列表?

这是一个示例应用沙箱,可以更好地了解我想要实现的功能。这是我到目前为止的地方。有了这个逻辑,我有3个集合 - 电路板列表和卡片和earch通过id引用它的父节点。

回答如下:

嵌入与引用的决定通常受到查询数据的方式的影响。如果卡片也包含讨论,这也是一个有趣的问题。 (< - 但这是另一个讨论),因为它会带来另一个嵌套级别。

关于什么

var schema = new mongoose.Schema({bucket:'string', position:'number', title: 'string', body: 'string',isDone:'boolean'});
var card = mongoose.model('Card', schema);

该板将是所有按桶分组的卡,并按桶内的位置排序。 (对于分组,建议使用聚合函数)。

在桶内拖动(改变)位置将是更新卡的位置。在桶之间移动卡将是更新桶字段。

当你看trello时,我认为他们使用websockets将更改推送到客户端,客户端对更新做出反应。

这意味着完全不同的模型。因此,服务器包含电路板的所有更改。因此,您需要将所有更改建模为命令/事件。 “CARD_CREATED”,CARD_MOVED_TO_BUCKET及其相应的有效负载。有了这个,您就可以将更改推送到服务器并返回到客户端。您希望查看eventsourcing,cqrs,redux,以获取有关将状态存储为一系列更改的更多信息。考虑一下您的银行帐户。总数是所有借方和贷方的汇总结果。

因此,虽然第一种方法对您有用,但第二种方法可能很有趣。

发布评论

评论列表(0)

  1. 暂无评论