我使用 database/sql 并定义了一个到 DB 表列(标签字段)的结构映射:
// Users ...
type Users struct {
ID int64 `field:"id"`
Username string `field:"username"`
Password string `field:"password"`
Tel string `field:"tel"`
}
Run Code Online (Sandbox Code Playgroud)
然后我查询:
rows, err := db.Query(sql) // select * from users
if err != nil {
fmt.Println(err)
}
defer rows.Close()
for rows.Next() {
user := new(Users)
// works but I don't think it is good code for too many columns
err = rows.Scan(&user.ID, &user.Username, &user.Password, &user.Tel)
// TODO: How to scan in a simple way
if …Run Code Online (Sandbox Code Playgroud) 我想用 http-proxy-middleware 和 express 配置代理。规则是主机名的映射,例如:
http://123.com >> http://localhost:3000/123
http://456.com >> http://localhost:3000/abc
Run Code Online (Sandbox Code Playgroud)
我试过这样:
import express from 'express';
import http from 'http';
import proxy from 'http-proxy-middleware';
const app = express();
app.use( async function (req, res) {
let direction = 'http://localhost:3000';
console.log('hostname: ', req.hostname);
console.log('originalUrl: ', req.originalUrl);
if (req.hostname == '123.com') {
direction = `http://localhost:3000/123${req.originalUrl}`;
}
if (req.hostname == '456.com') {
direction = `http://localhost:3000/abc${req.originalUrl}`;
}
return await proxy({ target: direction, changeOrigin: false })
});
const server = http.createServer(app);
app.set('port', '127.0.0.1');
server.listen(9999, '0.0.0.0');
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
如何在 Node.js 中对 S3 上传进行存根?
我用的是摩卡和诗农。我有一个导出包含上传方法的类实例的文件。它看起来像这样:
// storage.ts
import * as AWS from 'aws-sdk';
import archiver from 'archiver';
import retry from 'bluebird-retry';
export class Storage {
private readonly s3: AWS.S3 = new AWS.S3({
endpoint: MINIO_ENDPOINT,
accessKeyId: AWS_ACCESS_KEY_ID,
secretAccessKey: AWS_SECRET_ACCESS_KEY,
s3ForcePathStyle: true,
signatureVersion: 'v4',
});
private readonly uploadBucket: string = UPLOAD_BUCKET;
private readonly downloadBucket: string = DOWNLOAD_BUCKET;
public async upload(localPath: string, s3Key: string, onProgress: (progress: number) => void): Promise<void> {
await retry(async () => { // Be careful, it will influence …Run Code Online (Sandbox Code Playgroud)