1
votes

Numéro enregistré en tant que chaîne dans Firestore javascript

J'utilise le framework Vue

c'est du code HTML

product: {
        name:String,
        price: null,
      },
addProduct() {
      this.$firestore.Products.add(this.product);
    },

scénario

<input  name="quantity" type="number" v-model="product.price" placeholder="price" >

document Firestore

Je veux enregistrer le prix sous forme de numéro.


0 commentaires

3 Réponses :


0
votes

Lorsque vous entrez des données dans un champ de saisie de texte en HTML, leur valeur devient une chaîne dans le code JS. Vous devez convertir explicitement la valeur réelle en un nombre. Même si vous définissez le type="number" entrée type="number" , cela détermine uniquement le clavier que les utilisateurs mobiles voient lorsqu'ils saisissent la valeur. C'est toujours une chaîne en cas d'accès via JS

Une façon de le faire:

parseFloat(price)

Documentation pour le numéro

Une autre méthode serait de l'analyser

const price = Number(price);

Edit: La méthode de @Beyers semble être la meilleure implémentation pour Vue.


0 commentaires

1
votes

Utilisez le modificateur v-model.number

<input  name="quantity" type="number" v-model.number="product.price" placeholder="price" >


0 commentaires

0
votes

lorsque vous capturez une valeur de formulaire en javascript, il s'agit par défaut d'une chaîne. même si vous entrez un nombre dans le champ de texte du formulaire.

product: {
    name:String,
    price: null,
},

.......

addProduct() {
    data_firestore = {...this.product};
    data_firestore.price = parseFloat(data_firestore.price)
    this.$firestore.Products.add(data_firestore);
},

J'utilise un opérateur de diffusion, car je ne sais pas si vous utilisez la méthode de surveillance de l'objet produit ou non. donc copier puis modifier me semble plus sûr. vous pouvez également effectuer la conversion directe de parseFloat () sur l'objet réel.


0 commentaires