我在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
冲突列的现有列.
可以这样做吗?如果是这样,怎么样?
所以我试图使用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函数的范围?
让我说我有以下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字符串时,我如何让解码器以上述格式解析它?
我正在使用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)
所以我想要做的是取出并将这个路由声明拆分成多个文件,我将如何去做呢?提前致谢.
我在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
总是错误的.这是一个错误吗?如何验证令牌是否有效?
我正在建立一个表格的分页系统,并希望显示一个文本,就像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
.我怎样才能解决这个问题?
我正在为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)
如何获得默认模式?
我正在开发一个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而不影响我的其他路由?谢谢.
我正在尝试从我的数据库中提取一些统计数据。我有一张_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。
这能做到吗?有没有更好的方法来解决这个问题?
假设我有以下字符串
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
go ×6
gorilla ×2
postgresql ×2
android ×1
javascript ×1
json ×1
jwt ×1
pagination ×1
parsing ×1
sql ×1
statistics ×1
time ×1
upsert ×1
url-encoding ×1