我们的堆栈当前为:React SPA / Apollo / GraphQL / Rails / PostgreSQL。
我们有一个带有数字输入的Web表单,可以(或不)用于输入十进制值(动态/用户创建的表单)。
我们希望表格宽大(它具有自动保存功能)。如果用户键入,3
或17,
,则将其视为有效的数字值。但不要太宽容,该数字应可解析为浮点数,并可以显示在图形中...
此外,当用户再次访问该表单时,我们要确保将输入的数字与他最初键入的值完全相同(我的意思是,,3
不会变得神奇0,3
)
对于我们的堆栈,我想知道如何在不丢失初始用户输入值的情况下进行序列化(作为GraphQL有效负载发送)和存储(在PostgreSQL中)和操纵(在JS / Ruby中)这样的数字。
我认为发送/存储字符串会更简单,只要它已被验证可以解析即可。
只是想知道是否有一个“适当的”解决方案,例如使用数字库,自定义GraphQL标量类型,十进制SQL类型...对我来说似乎很复杂,以前有人做过类似的事情吗?
答案 0 :(得分:1)
创建两个字段。一种用于用户输入,另一种用于解析值。我认为这对于任何堆栈都不会有所不同。
挑战在于如何向用户展示您如何理解输入的价值。这可以通过在文本字段下使用带有解析值的提示来解决。
答案 1 :(得分:1)
您应该选择输入类型为“文本”而不是数字,以便可以为输入创建特定格式。首先,向您的州添加属性
void value_array_write(ValueArray* array, Value value);
表单中金额输入部分应如下:
class BinaryTree():
def __init__(self, data):
self.left = None
self.right = None
self.data = data
def tree_insert(self, data):
if (data < self.data):
if (self.left != None):
self.tree_insert(data, self.left)
else:
self.left = BinaryTree(data)
else:
if (self.right != None):
self.tree_insert(data, self.right)
else:
self.right = BinaryTree(data)
上面函数中的regexp表示以-开头的任意数字开头,并且u可以以2个小数结尾。您可以为您的表格进行更改。
如果您只想为价格加上正数,则可以使用此正则表达式:
state={amount:""}