小编ner*_*lip的帖子

如何使用Firestore更新"对象数组"?

我正在尝试Firestore,而且我遇到了一些非常简单的事情:"更新一个数组(也就是一个子文档)".

我的DB结构非常简单.例如:

proprietary: "John Doe",
sharedWith:
  [
    {who: "first@test.com", when:timestamp},
    {who: "another@test.com", when:timestamp},
  ],
Run Code Online (Sandbox Code Playgroud)

我正在尝试(没有成功)将新记录推送到shareWith对象数组中.

我试过了:

// With SET
firebase.firestore()
.collection('proprietary')
.doc(docID)
.set(
  { sharedWith: [{ who: "third@test.com", when: new Date() }] },
  { merge: true }
)

// With UPDATE
firebase.firestore()
.collection('proprietary')
.doc(docID)
.update({ sharedWith: [{ who: "third@test.com", when: new Date() }] })
Run Code Online (Sandbox Code Playgroud)

没有用.这些查询会覆盖我的数组.

答案可能很简单,但我找不到......

谢谢

javascript arrays object firebase google-cloud-firestore

70
推荐指数
7
解决办法
6万
查看次数

使用'承诺'与不使用'承诺':在哪些情况下?

我不知道SO是否适合这样的问题.

我知道了一点Promises,我在一个Node/Express环境中使用它们来"修复" Node查询数据库时的异步行为(=等待DB回答,然后做一些事情).

但是,我使用它们越多,我不知道何时不使用它们.

例如,我写了一段这样的代码(用于本地脚本查询Google Matrix API)...

 ....
 for (var i = 0; i < rows.length; i++) { // loop over a CSV file by line
    var cell = rows[i].split(/;/)
    var origin = cell[1]
    var destination = cell[2]
    var id = cell[0]
    Promise.all([origin, destination, id]).then((p) => {}
 ...
Run Code Online (Sandbox Code Playgroud)

我不知道在这里使用是否Promise.all有意义......

有规则要知道吗?我没有得到的行为?

换句话说,我什么时候知道我的脚本在function没有正确参数的情况下运行的"风险" (argument从另一个function没有"结束"的情况下返回)...?

谢谢.

javascript promise

5
推荐指数
1
解决办法
87
查看次数

Appengine - 上传文件时出现 tmp/ 文件系统错误

我对 Appengine (GCP) 和通过 Multer 上传文件有疑问...

我想在我的数据库中存储一个 base64 图像(无论出于什么原因)。为此,我尝试将此图像上传到/tmp显然是可写的),然后将其编码为 Base64,然后将其存储到数据库中。

在本地,它就像一个魅力,但一旦部署,它就不会:Error: EROFS: read-only file system, mkdir '/srv/tmp'

你有什么线索吗?下面是我的简化代码。

'use strict'

const express = require('express')
const router = new express.Router()
const multer = require('multer')
const upload = multer({ dest: 'tmp/' })
const fs = require('fs')

// APP DEPENDENCIES
const { saveHousing } = require('../models/housing.js')


/////////////////////////////////////
router.post('/', upload.single('upload'), async (req, res) => {

  var img = fs.readFileSync(req.file.path).toString('base64')
  const housing = { IMG: { MIME: req.file.mimetype, DATA: img …
Run Code Online (Sandbox Code Playgroud)

filesystems google-app-engine file-upload multer

5
推荐指数
1
解决办法
1397
查看次数

Docker - 如何从 Dockerfile 有条件地为 M1 Mac 或 AMD 构建映像?

一些背景:
-我是一个Docker新手(从 1 天开始),
-我有一个小VM运行linux/AMD,我拥有一台 M1 Mac ( ARM),
-我还想使用 Container for Dev(而不是虚拟环境) )。

为了在 M1 Mac 上构建我的容器prod,我有以下内容Dockerfile
请参阅--platform=linux/amd64arg in FROM,它可以工作(=我能够部署)。

FROM --platform=linux/amd64 python:3.10-slim-bullseye
WORKDIR /usr/src/app
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
ENV FLASK_ENV=development 
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["flask", "run"]
Run Code Online (Sandbox Code Playgroud)

但是,如果我想为本地开发构建,我怎么能在我的声明中Dockerfile说不使用呢? 我见过一些关于 SO 的帖子,其中有条件但仅用于命令。 有什么想法或最佳实践吗? 谢谢。--platform=linux/amd64
dockerfile RUN

build docker dockerfile

5
推荐指数
1
解决办法
7961
查看次数

反应:如何在将“ this.state.x”用于函数之前等待数据?

我目前正在学习React,对于新手来说有些东西不那么容易...

我有一个简单的组件renders(请注意,li由于functiongetSlots,它呈现了一个数组):

render () {
    return (
        <ul>
          {this.getSlots(this.state.viewing).map(item => <li key={item}>{item}</li>)}
        </ul>
    )
  }
Run Code Online (Sandbox Code Playgroud)

功能getSlots是:

constructor (props) {...}

getSlots (viewing) {

    SOME STUFF...

    const monday = this.state.house.monday

    return SOME STUFF...
  }

componentDidMount () {...}

render () {...}
Run Code Online (Sandbox Code Playgroud)

关键是getSlots需要获取数据componendDidMount才能正常工作。确实,这时getSlots不起作用(崩溃),因为它在获取数据之前运行(this.state.house.monday运行时为“空”)。

如何在运行之前等待数据被提取getSlots?感谢您的提示。

javascript asynchronous reactjs

3
推荐指数
1
解决办法
7794
查看次数

在 Google Cloud Builder 中使用 git 命令

我正在尝试将 GoogleCloud Build与 GitHub结合使用来创建 CI/CD 管道。但是我正在为 GCB 苦苦挣扎...

下面是一个非常简单的管道:

  1. 运行npm install--> 它有效
  2. 运行npm test--> 它有效
  3. 运行npm run css:ALLrm一些文件+做一些缩小的东西)-->似乎工作
  4. 运行一些git命令 -->不起作用

错误:

Step #3: fatal: not a git repository (or any parent up to mount point /)
Step #3: Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
Run Code Online (Sandbox Code Playgroud)

云构建.yaml

steps:
  - name: 'gcr.io/cloud-builders/npm'
    args: ['install']
  # run test
  - name: 'gcr.io/cloud-builders/npm'
    args: ['test']
  # build css files
  - name: 'gcr.io/cloud-builders/npm' …
Run Code Online (Sandbox Code Playgroud)

git github google-cloud-build

0
推荐指数
1
解决办法
989
查看次数