为什么iPhone可以收到被墙的App推送

因为推送不是由App直接发的,而是统一发到Apple的推送服务上,最终由Apple推送到手机上

阅读全文

怎样在Pages中插入分割线

为了写简历,不知道怎么插入一条直线作为分割线。查到v2ex上的一篇帖子问了同样问题。

1
在右边Layout里的Borders & Rules可以设置分割线的风格以及位置。

阅读全文

JavaScript Date

小程序云函数里使用new Date('2019-05-22 00:00:00')得到了一个NaN,和浏览器的不一样,和本地测试也不一样,只是真实环境,用腾讯自己的服务时才有这个问题。后来去找了资料,得知到怎样按照时区来parse的完整字符串。比如:

1
new Date('2019-05-22T14:00:00+08:00') // 按照东8区

阅读全文

解决小程序云开发不支持数据库事务引发的问题

小程序有上传图片功能,但考虑到图片可能由非手机设备拍摄的,因此增加了Web上传接口。Web上传后,小程序中有一个数据同步按钮,用以触发云函数去拉取Web上的数据。结果发现有大量重复数据被插入到小程序云数据库中,临时方案进行去重处理,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
let all = []
for (let i = 0; i < 10; i++) {
let res = await db.collection('product').skip(i * 100).limit(100).get()
console.log(res)
if (res.data.length === 0) {
break
}
all = all.concat(res.data)
}

console.log(all)
const obj = {}
all.forEach(e => {
obj[e.fileId] = true
})

all.forEach(function(e){
if (obj[e.fileId]) {
delete obj[e.fileId]
} else {
if (e.visible === undefined) {
console.log('delete ', e.fileId)
db.collection('product').doc(e._id).remove()
}
}
})

阅读全文

openapi.templateMessage.send:fail invalid form id

使用小程序的模版通知,结果得到题目的这种错误。发现如果发给支付方则可以成功,而想发送通知给售出方则会有下面的这种错误。

1
{"errCode":41028,"errMsg":"openapi.templateMessage.send:fail invalid form id hint: [xbWplA05654114]"}

阅读全文

怎样在JavaScript中尽早返回

为了健壮性,要对每一步操作进行执行结果检查,代码写出来很臃肿,不知道怎么精简。

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
async function func1(){
let res
try {
let res = await db.call()
} catch(e) {
console.error(e)
return {
err: true,
msg: 'fail in func1'
}
}
return {
err: false,
data: res
}
}

// func2 ...
// func3 ...

async function main(){
let res = await func1()
if (res.err) {
return {
err: true,
msg: 'fail in func1'
}
}

res = await func2()
if (res.err) {
return {
err: true,
msg: 'fail in func2'
}
}

res = await func3()
if (res.err) {
return {
err: true,
msg: 'fail in func3'
}
}

return {
err: false,
msg: 'ok'
}
}

阅读全文

怎样创建一组层叠头像

比如要列出所有点赞的人的头像,一个头像叠一个头像,但它们之间还是偏移一些。可以使用margin-left: -20px这样的负值margin来实现

阅读全文

nginx config

  • client intended to send too large body
    1
    2
    3
    http {
    client_max_body_size 20M;
    }

阅读全文

JavaScript中要尽量使用for而不是forEach

看到《Don’t use Array.forEach, use for() instead》这篇文章介绍了这个事情,没细究,不过记住了

阅读全文

微信支付签名算法(JavaScript版)

MD5算法参考
另外可能存在的问题:似乎没有测试中文(utf8编码)

晚上看到社区的这篇文章,用于实现微信支付的,明天争取也能跑通

阅读全文