我正在尝试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)
没有用.这些查询会覆盖我的数组.
答案可能很简单,但我找不到......
谢谢
我不知道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没有"结束"的情况下返回)...?
谢谢.
我对 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) 一些背景:
-我是一个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
我目前正在学习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?感谢您的提示。
我正在尝试将 GoogleCloud Build与 GitHub结合使用来创建 CI/CD 管道。但是我正在为 GCB 苦苦挣扎...
下面是一个非常简单的管道:
npm install--> 它有效npm test--> 它有效npm run css:ALL(rm一些文件+做一些缩小的东西)-->似乎工作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) javascript ×3
arrays ×1
asynchronous ×1
build ×1
docker ×1
dockerfile ×1
file-upload ×1
filesystems ×1
firebase ×1
git ×1
github ×1
multer ×1
object ×1
promise ×1
reactjs ×1