Моя программа в настоящее время принимает один пользовательский ввод для определенной категории. Если он / она считает, что необходимо другое поле, доступна кнопка добавления поля. Введите вопрос, как мне получить все эти множественные пользовательские входы для этой определенной категории и превратить их в тип поля массива, чтобы я мог поместить его в Firestore? Как правильно запрашивать указанный ввод, чтобы он превращался в массив при просмотре в Firestore?
Изображение программы:
Пример того, что я хочу видеть в своей базе данных:
Обратите внимание, что поле allergies
на этом изображении уже задано как массив
Мой текущий код:
Этот код является пользовательским вводом или код формы:
<div class="form-group">
<label>Allergy</label>
<ul id="fieldList">
<li>
<input type="text" name="allergy" class="form-control" placeholder="Allergy" value="" id="allergy" required>
</li>
</ul>
<button id="addMore">Add more fields</button>
<script>
$(function() {
$("#addMore").click(function(e) {
e.preventDefault();
$("#fieldList").append("<li><input type='text' name='allergy' class='form-control' placeholder='Allergy' /></li>");
});
});
</script>
</div>
Этот код получает весь пользовательский ввод и делает set
для Firestore:
//Register
$('#registerForm').on('submit', async function (e) {
e.preventDefault();
// var date_input = new Date($("#date_input").val());
// var day = date_input.getDay();
// var month = date_input.getMonth() + 1;
// var year = date_input.getFullYear();
// var theDate = year + "-" + month + "-" + day;
var data = {
email: $('#email').val(), //get the email from Form
firstName: $('#fname').val(), // get firstName
lastName: $('#lname').val(), // get lastName
allergies: $('#allergy').val(),
sex: $('#sex').val(),
birthDate: new Date($('#bday').val()),
diabetesType: parseInt($('#dtype').val()),
diabetesComplication: $('#dcomp').val(),
weight: parseInt($('#weight').val()),
height: parseInt($('#height').val()),
};
console.log(data);
console.log(data.birthDate);
var passwords = {
password : $('#password').val(), //get the pass from Form
cPassword : $('#cpassword').val(), //get the confirmPass from Form
}
if( data.email != '' && passwords.password != '' && passwords.cPassword != '' ){
if( passwords.password == passwords.cPassword ){
//create the user
await firebase.auth()
.createUserWithEmailAndPassword(data.email, passwords.password)
.then(function(user){
console.log('uid',user.user.uid);
usersRef.doc(user.user.uid).set({
'email': data.email, 'firstName': data.firstName,
'lastName': data.lastName, 'allergies': data.allergies,
'sex': data.sex, 'birthDate': firebase.firestore.Timestamp.fromDate(data.birthDate),
'diabetesType': data.diabetesType, 'diabetesComplication': data.diabetesComplication,
'weight': data.weight, 'height': data.height,
})