1
yannxia 2022-11-05 09:51:00 +08:00 1
可能需要的是一个 mongodb
|
2
nowheremanx OP @yannxia 最大的问题在用户那里,用户在网页上是用 text area 编辑的,不是富文本,我也没办法帮忙改造。需要一个非常清晰的数据结构让用户去输入(很多用户不是程序员)。
|
3
ospider 2022-11-05 09:58:17 +08:00
xy 问题,还好你把前因后果都说明白了。需要改的不是数据库,更重要的是增加一个类似 react-jsonschema-form 这种从 schema 自动生成表单的工具。
|
4
SuperMild 2022-11-05 09:59:09 +08:00
看你说的情景,貌似用户量不会很大,用 TOML 也可行。
但不建议直接让普通用户自己操作 TOML ,好歹弄个网页表单让他们填。新增 field 应该有一个申请过程,日常使用还是要固定 field 的。 |
5
wxf666 2022-11-05 09:59:37 +08:00
奇怪,不能动态构造有 firstName, lastName, education, tag, travel, …… 等字段的表单,给用户填写吗?
用户提交后,后端再转成 json ,写进数据库。。 好像不难啊? |
6
renmu 2022-11-05 10:05:21 +08:00 via Android
然后客户说我们要根据这个字段做筛选,做排序
|
8
locochen 2022-11-05 10:20:26 +08:00 via iPhone
纵表可以试一下
|
9
nowheremanx OP @SuperMild 是的,都是内部用户。 主要我也管不了那个网页平台,不然也不用费神改造这个 field 了。
现在这个想法就是让用户、我这边的脚本( oop )联通,既可以通过 oop 修改,又可以在网页上直接修改。 脚本: user.tags.append("管理员") user.save() # 山寨 orm ,toml dict 转成 toml text ,还原自由文本,然后把整个文本作为一个 field ,通过 api 更新。 用户: 直接在 tags 里面通过网页填写。 就算格式填写错了(比如 tags 填了 1 这种数字),每天跑一遍数据库检查并发送 email 提示也是没问题的。 除此之外,另外一个部门也可以用我的代码进行 BI 分析,比如公司内部有多少北大青鸟毕业生。 len([user for user in users if "北大青鸟" in user.education]) |
10
nowheremanx OP @ospider 你好,我应该算是乙方。。。网页的前端、后台我都没有办法修改,我只是用那个平台。每次叫对方部门增加一些 feature ,我都要等很久,所以想自己做一套类似于 virtual field 的东西。
|
11
wxf666 2022-11-05 11:07:39 +08:00 1
@nowheremanx 会不会『希望用户能老老实实填写正确的 `toml`』有点不现实?
比如,会不会出现: - 不小心删掉了一点 `{indicator}`,导致你没法定位 - 写成了中文符号 *(`tags = [“程序员”,“大牛”] `)* - 没正确转义字符串 *(`path = "C:\users\toml\Desktop\new\使用"的注意事项.docx"`)* - 输错键名 *(`tag = ...`)* - …… |
12
oldshensheep 2022-11-05 11:27:16 +08:00 via Android
>> 网页的前端、后台我都没有办法修改。
后台返回一个 javascript 代码,前端运行 |
13
tramm 2022-11-05 15:56:04 +08:00
那个字段用 JSON 格式嘛 :P
|
14
totoro52 2022-11-05 17:22:26 +08:00
你直接说我要一个自定义字段的功能不就行了。。 这种需求基于在 B 端系统在常见了,我的建议是拿一个字段表和字段数据表去记录真实的数据。。,JSON 到后期你想改造加需求你回发现越来越难
我做过这个需求,我的做法就是按照我上面说的, 而且还可以搜索排序各种方式,不过我是写入到 ES 里的 所以 mysql 只是拿来村数据 |
15
totoro52 2022-11-05 17:27:27 +08:00
我做过的 B 端基于全部都有这个需求, 有的甚至更变态,
所有的模块需要全部支持自定义新增字段,这个字段还要参与排序, 检索 甚至还要参与导出到 execl , 同时还要支持表头自定义 我甚至写一个更离谱的需求,各个模块某些字段是有联动性的,比如 A 模块有个联系人,B 模块在选 A 模块列表数据时,需要把 B 模块的联系人自动填写进去,也就是等于各个模块的自定义字段可以相互传递, 什么变态的需求都过来了 |
16
akira 2022-11-05 18:07:34 +08:00
不是很建议这么折腾。。你应该是想办法推进 加快 feature 需要的时间,而不是自己另外搞一套东西嵌上去
|
17
wxf666 2022-11-06 00:45:35 +08:00
@totoro52 数据库新手请教一下,如果是用 `MySQL` 实现的话,这个 `字段数据表` 结构是咋样的呢?
`( ID PRIMARY KEY ,所属记录 ID ,字段 ID ,数据 TEXT ,INDEX (所属记录 ID ,字段 ID ))` 这样? 检索,用全文索引? 排序。。是啥。。 > 比如 A 模块有个联系人,B 模块在选 A 模块列表数据时,需要把 B 模块的联系人自动填写进去 (可能没理解透功能)直接 JOIN 能解决吗? |
18
xuanbg 2022-11-06 07:29:48 +08:00
如果 OP 你所谓的字段与业务逻辑无关的话,写成:
fisrtName:小明 lastName:王 tags:程序员、大牛 这样的文本难道不利于阅读吗? |
19
totoro52 2022-11-06 10:07:59 +08:00
|
20
nowheremanx OP @xuanbg 我这边需要序列化 /反序列化和数据处理的。参见 9L 发言。
|
21
nowheremanx OP @akira 确实是一个很大的坑,也不 elegant 。同时,我也担心未来业务和代码搭建在这上面会带来很多风险,那就属于重大决策失误了。
这个小项目也是在构思阶段,过来问问主要想看有没有成熟的解决方案。 目前为止没看到合适的。 |