小编zol*_*ola的帖子

如何在PostgreSQL中使用RETURNING和ON CONFLICT?

我在PostgreSQL 9.5中有以下UPSERT:

INSERT INTO chats ("user", "contact", "name") 
           VALUES ($1, $2, $3), 
                  ($2, $1, NULL) 
ON CONFLICT("user", "contact") DO NOTHING
RETURNING id;
Run Code Online (Sandbox Code Playgroud)

如果没有冲突,则返回如下内容:

----------
    | id |
----------
  1 | 50 |
----------
  2 | 51 |
----------
Run Code Online (Sandbox Code Playgroud)

但如果存在冲突,则不会返回任何行:

----------
    | id |
----------
Run Code Online (Sandbox Code Playgroud)

id如果没有冲突,我想返回新列,或者返回id冲突列的现有列.
可以这样做吗?如果是这样,怎么样?

sql postgresql upsert sql-returning

127
推荐指数
7
解决办法
4万
查看次数

如何获取目录总大小?

所以我试图使用golang获取目录的总大小,到目前为止我有这个

var dirSize int64 = 0

func readSize(path string, file os.FileInfo, err error) error {
    if !file.IsDir() {
        dirSize += file.Size()
    }
    return nil
} 

func DirSizeMB(path string) float64 {
    dirSize = 0
    filepath.Walk(path, readSize)
    sizeMB := float64(dirSize) / 1024.0 / 1024.0
    sizeMB = Round(sizeMB, .5, 2)
    return sizeMB
}
Run Code Online (Sandbox Code Playgroud)

所以问题是dirSize全局变量是否会导致问题,如果是,我如何将其移动到DirSizeMB函数的范围?

go

11
推荐指数
1
解决办法
5924
查看次数

如何从golang中的json解析非标准时间格式?

让我说我有以下json

{
    name: "John",
    birth_date: "1996-10-07"
}
Run Code Online (Sandbox Code Playgroud)

我想将其解码为以下结构

type Person struct {
    Name string `json:"name"`
    BirthDate time.Time `json:"birth_date"`
}
Run Code Online (Sandbox Code Playgroud)

像这样

person := Person{}

decoder := json.NewDecoder(req.Body);

if err := decoder.Decode(&person); err != nil {
    log.Println(err)
}
Run Code Online (Sandbox Code Playgroud)

这给了我错误 parsing time ""1996-10-07"" as ""2006-01-02T15:04:05Z07:00"": cannot parse """ as "T"

如果我要手动解析它我会这样做

t, err := time.Parse("2006-01-02", "1996-10-07")
Run Code Online (Sandbox Code Playgroud)

但是当时间值来自json字符串时,我如何让解码器以上述格式解析它?

time go

11
推荐指数
2
解决办法
5085
查看次数

如何组织大猩猩mux路线?

我正在使用Gorilla Mux编写REST API,我在组织路由时遇到问题,目前我的所有路由都在这样的main.go文件中定义

//main.go
package main

import (
    "NovAPI/routes"
    "fmt"
    "github.com/gorilla/mux"
    "net/http"
)

func main() {

    router := mux.NewRouter().StrictSlash(true)

    router.HandleFunc("/hello", func(res http.ResponseWriter, req *http.Request) {
        fmt.Fprintln(res, "Hello")
    })

    router.HandleFunc("/user", func(res http.ResponseWriter, req *http.Request) {
        fmt.Fprintln(res, "User")
    })

    router.HandleFunc("/route2", func(res http.ResponseWriter, req *http.Request) {
        fmt.Fprintln(res, "Route2")
    })

    router.HandleFunc("/route3", func(res http.ResponseWriter, req *http.Request) {
        fmt.Fprintln(res, "Route3")
    })

    // route declarations continue like this

    http.ListenAndServe(":1128", router)

}
Run Code Online (Sandbox Code Playgroud)

所以我想要做的是取出并将这个路由声明拆分成多个文件,我将如何去做呢?提前致谢.

go gorilla

10
推荐指数
3
解决办法
3627
查看次数

如何使用jwt-go库验证JSON Web令牌?

我在golang中使用jwt-go库,并使用HS512算法对令牌进行签名.我想确保令牌有效,文档中的示例如下:

token, err := jwt.Parse(myToken, func(token *jwt.Token) (interface{}, error) {
    return myLookupKey(token.Header["kid"])
})

if err == nil && token.Valid {
    fmt.Println("Your token is valid.  I like your style.")
} else {
    fmt.Println("This token is terrible!  I cannot accept this.")
}
Run Code Online (Sandbox Code Playgroud)

我理解这myToken是字符串标记和keyFunc获取传递解析的标记,但我不明白应该做什么myLookupKey 功能?,并且当我将它打印到控制台时token.Header没有kid值,甚至认为令牌具有所有我输入的数据token.Valid总是错误的.这是一个错误吗?如何验证令牌是否有效?

go jwt

6
推荐指数
1
解决办法
2120
查看次数

如何使用javascript计算每页的项目数及其索引?

我正在建立一个表格的分页系统,并希望显示一个文本,就像1 to 5 of 14 entries我有以下代码

var totalItemsCount = 14;
var numberOfItemsPerPage = 5;
var page = 1;

var numberOfPages = Math.floor((totalItemsCount + numberOfItemsPerPage - 1) / numberOfItemsPerPage);

var start = (page * numberOfItemsPerPage) - (numberOfItemsPerPage - 1);

var end = start + numberOfItemsPerPage - 1;

console.log(`${start} to ${end} of ${totalItemsCount}`);
Run Code Online (Sandbox Code Playgroud)

现在,当每页的项目数可以平均分配项目总数时,这种方法很有效,但是当不是这种情况时,这end将是不正确的.在下面的例子中,如果变量page是3 end将是1.我怎样才能解决这个问题?

javascript pagination

6
推荐指数
2
解决办法
2773
查看次数

如何获取Android设备的默认振动模式?

我正在为Android API 23创建一个应用程序,我想获取手机响起时使用的默认振动模式吗?

到目前为止,我有:

Vibrator vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
long[] pattern = {0, 500, 1000}; // default pattern goes here
vibrator.vibrate(pattern, 0);
Run Code Online (Sandbox Code Playgroud)

如何获得默认模式?

android android-vibration android-6.0-marshmallow

4
推荐指数
2
解决办法
3307
查看次数

如何在Gorilla Mux中将http重定向到https?

我正在开发一个golang应用程序,我正在使用Gorilla Mux,我想将HTTP请求重定向到HTTPS

这是我到目前为止所拥有的

package main

import (
    "net/http"

    "github.com/gorilla/mux"
    "github.com/zolamk/deviant/handlers"
    "github.com/zolamk/deviant/lib"
)

func main() {

    router := mux.NewRouter()
    // this is where i am trying to redirect
    router.PathPrefix("/").Schemes("HTTP").HandlerFunc(func(res http.ResponseWriter, req *http.Request) {

        http.Redirect(res, req, fmt.Sprintf("https://%s", req.URL), http.StatusSeeOther)

    })

    router.Handle("/", handlers.ContextHandler(handlers.Index)).Methods("GET")

    router.Handle("/register/", handlers.ContextHandler(handlers.Register)).Methods("GET")

    router.Handle("/register/", handlers.ContextHandler(handlers.RegisterPost)).Methods("POST")

    router.Handle("/login/", handlers.ContextHandler(handlers.Login)).Methods("GET")

    router.Handle("/login/", handlers.ContextHandler(handlers.LoginPost)).Methods("POST")

    router.Handle("/logout/", handlers.ContextHandler(handlers.Logout)).Methods("GET")

    if lib.Settings.ServeStatic {

        router.PathPrefix("/public/").Handler(http.FileServer(http.Dir("./")))

    }

    router.NotFoundHandler = handlers.ContextHandler(handlers.NotFound)

    log.Printf("Deviant running @ http://%s\n", lib.Settings.Address)

    loggedRouter := handlers.LoggedRouter(os.Stdout, router)

    log.Fatal(http.ListenAndServe(lib.Settings.Address, loggedRouter))

}
Run Code Online (Sandbox Code Playgroud)

就像我之前说过如何将HTTP流量重定向到HTTPS而不影响我的其他路由?谢谢.

go gorilla

4
推荐指数
2
解决办法
5529
查看次数

如何使用postgres生成一个json对象作为键值?

我正在尝试从我的数据库中提取一些统计数据。我有一张_employees桌子,我想按国家/地区统计员工人数。假设_employees表有一个列country,我有一个聚合计数的键值表示的查询。

select json_object_agg(key, value) 
from (
        select distinct e.country 
        from _employees as e group by (e.country)
    ) as key, 
    (
        select distinct count(1) 
        from _employees as e 
        group by(e.country)
    ) as value;
Run Code Online (Sandbox Code Playgroud)

我想要这样的数据

{
     "ET": 100,
     "JM": 245 // And it will go on like this
}
Run Code Online (Sandbox Code Playgroud)

但我有以下错误

键值必须是标量,而不是数组、复合或 json。

这能做到吗?有没有更好的方法来解决这个问题?

postgresql statistics json aggregate-functions

4
推荐指数
1
解决办法
3147
查看次数

如何在golang中将字符串解析为url.Values?

假设我有以下字符串

honeypot=&name=Zelalem+Mekonen&email=zola%40programmer.net&message=Hello+And+this+is+a+test+message...

我想将其转换为url.Values结构,我有以下

data := url.Values{}

parameters := strings.Split(request.Body, "&")

for _, parameter := range parameters {

    parts := strings.Split(parameter, "=")

    data.Add(parts[0], parts[1])

}
Run Code Online (Sandbox Code Playgroud)

确实可以将其转换为,url.Values但是问题是它不会将url编码的值转换+为空格,所以首先有更好的方法来解析它吗?然后,如果不是,我该如何首先将url编码的字符串转换为普通字符串?

感谢您的帮助... o

parsing go url-encoding

4
推荐指数
1
解决办法
4546
查看次数