Я не могу написать в базу данных пожарного магазина - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь добавить значения имени и цены в список, но с помощью этой функции:

Write_date () {
  alert ("write date");
   this.products.id = this.randomId();
db.collection("products").add(this.products)

.then(function(docRef) {

    console.log("Document written with ID: ", docRef.id);
    this.products.name ="";
    this.products.price ="";

})
.catch(function(error) {
    console.error("Error adding document: ", error);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

[Vue warn]: ошибка в обработчике v-on: «FirebaseError: [code = invalid-аргумент]: функция CollectionReference.add () требует, чтобы ее первый аргумент имел тип объекта, но это был: массив»

Пакеты, используемые в vue js Сайт:

"bootstrap": "^4.4.1",
"bootstrap-vue": "^2.13.0",
"core-js": "^3.6.4",
"firebase": "^7.14.2",
"jquery": "^3.4.1",
"materialize-css": "^1.0.0-rc.2",
"node-ipc": "^9.1.1",
"popper.js": "^1.16.1",
"run": "^1.4.0",
"serve": "^11.3.0",
"vue": "^2.6.11",
"vue-fire": "^0.1.0",
"vue-router": "^3.1.6",
"vue-simple-alert": "^1.1.1"
products: [],


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

   fields: ['name', 'price'],

Структура поддержки следующая:

1 Ответ

0 голосов
/ 03 мая 2020

Документ Firestore состоит из именованных полей, каждое из которых имеет значение. Значение может быть массивом, но оно всегда должно храниться в именованном поле. А так как вы передаете массив без имени, SDK отклоняет операцию.


Если вы пытаетесь добавить каждый продукт в базу данных как отдельный документ, это будет:

this.products.forEach((product) {
  db.collection("products").add(product);
});

Если вы пытаетесь добавить все продукты в один документ, вы должны указать название поля для размещения продуктов:

db.collection("products").add({ products: this.products });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...