Mongoose不接受以0开始的数字

5lwkijsr  于 2023-02-04  发布在  Go
关注(0)|答案(3)|浏览(154)

我试图保存一个法国号码电话,例如:060908...
这是我的身体要求:

newAppointment.phone = req.body.phone;

我的架构:

phone: {
            type:Number,
            required: true
        }

和我的数据:06
这将返回一个错误:语法错误:意外的数字。当我将其转换为字符串时,它是remove0。
答案:使用字符串

cuxqih21

cuxqih211#

如果你想把0放在第一位,你必须在你的模式中把电话类型作为字符串,因为我们知道把0放在第一位不会改变号码的值
因此,您模式如下所示:

phone: {
      type: String,
      required: true
}

然后以“0609084542”发送您的数据

vuktfyat

vuktfyat2#

要存储类似0609084542的电话,不能使用Number字段。请改用String字段。

phone: {
      type: String,
      required: true
}

我认为你需要一些关于类型的帮助(* 字符串,数字aka整数/字符/长/浮点/双 *)。
Here您有一个堆栈溢出帖子,讨论数字中的前导0

const toto = 0652;

待知

const toto = 0652;

不同于

const toto = 652;

不同于

const toto = '0652';
mzmfm0qo

mzmfm0qo3#

如果你真的想把电话号码存储为一个数字,可以使用get / set机制,所以,你的模式肯定可以把电话号码插入到一个数字中,然而,set会把字符串转换成一个数字,只需去掉前导的0,然后get会把数字转换成字符串,把前导的0放回到前面。

phone: { type: Number, get: v => v.slice(1)*1, set: v => '0'+v.toString() }

toJSON: { getters: true };

相关问题