javascript - 我无法写入 Firestore 数据库
问题描述
我正在尝试将名称和价格值添加到列表中,但使用此功能:
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 警告]:v-on 处理程序中的错误:“FirebaseError:[code=invalid-argument]:函数 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'],
支撑结构如下:
解决方案
Firestore 文档由命名字段组成,每个字段都有一个值。该值可以是一个数组,但它必须始终存储在一个命名字段中。由于您传递的是一个没有名称的数组,因此 SDK 会拒绝该操作。
如果您尝试将每个产品作为单独的文档添加到数据库中,那就是:
this.products.forEach((product) {
db.collection("products").add(product);
});
如果您尝试将所有产品添加到单个文档中,则必须指定将产品放入的字段名称:
db.collection("products").add({ products: this.products });
推荐阅读
- python - 在 Python / Numpy 中矢量化从多个边界框点构建多个笛卡尔坐标网格
- flutter - 创建:(_) => AboutBloc(widget.seed)..add(CallforAbout()) 不能在颤振中工作
- django - 用于创建多种 T 恤衫的 Django 模型
- api - 使用 mulesoft 代理时,它是否设置了发出请求的客户端的 X-Forwarded-For IP?
- c# - 使用 MailKit 的一些多语言电子邮件的电子邮件传递失败,而它与旧版 System.Net.Mail 一起工作就像一个魅力
- java - 为什么当我的 Spring Boot 应用程序尝试访问 index.jsp 文件时出现 404 错误?
- excel - 使用 Excel 进行曲面优化
- javascript - 如何通过 JavaScript 切换 Bootstrap 5 手风琴组件?
- boolean - 有没有一种简单的方法来检查所有变量是一起为真,还是一起为假?
- c# - 从固定数组转换为字节指针时出错