我有一个项目,用户可以在其中输入可以选择的下拉值。一次可以选择多个值。因此,我们必须存储选择并使其处于编辑模式。
让我们将它们存储为逗号分隔的DB。
f.e。 如果建议是A,B,C,并且用户选择A和B,则我打算将A,B存储在DB中,同时取回值时用逗号将其拆分。
当用户在字段中有真正的“逗号”时,例如第一个选项和第二个选项,就会出现问题。那时用逗号加入是行不通的。
我可以想到另一种选择,将其存储为字符串数组格式并在返回时进行解析。
对于上述实例,它将数据存储为[“ first,option”,“ second,option”]。对我来说,这似乎是一个不错的选择。
尽管我有点犹豫(这使我在这里提出疑问!),因为我的用户可以直接访问api / DB值,但对于他们来说,它看起来并不好。
那么,还有没有其他方法可以解决此问题,使双方,开发人员和用户都受益?在此先感谢!
答案 0 :(得分:0)
我建议使用JSON,XML等标准化格式。
序列化和解析,并使用广泛使用的库,因此可以为您完成保留/特殊字符的所有转义。在这里滚动自己会引起问题!
更好的是,对每个建议使用不同的字段,通常这是一个更好的设计。只要势场的数量是有限的,这将起作用,例如1-10条建议。
如果您要沿JSON路线走,我们可以在JavaScript中执行以下操作:
let suggestions = ['Choice A, commas are not, a problem, though punctuation is.', 'Choice B', 'Choice C'];
let json = JSON.stringify(suggestions);
// Save to DB
saveToDB(json);
let jsonFromDB = loadFromDB();
let deserializedSuggestions = JSON.parse(jsonFromDB);
console.log(deserializedSuggestions);
答案 1 :(得分:0)
我们在当前项目中使用分号(;)。
因此,根据您的问题,它们将以option1;option2;option3
的形式存储在数据库中
,当我们从数据库取回它时,可以在它上使用split()
方法将其转换为子字符串数组。
var str = "option1;option2;option3";
var res = str.split(";");
console.log(res);
这将导致控制台中出现(3) ["option1", "option2", "option3"]
。
希望这会有所帮助。