EMAS柳色_个人页

个人头像照片 EMAS柳色
个人头像照片
0
1
0

个人介绍

EMAS Serverless

擅长的技术

  • Linux
获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
暂无更多信息

2022年12月

正在加载, 请稍后...
暂无更多信息
  • 回答了问题 2023-01-29

    EMAS serverless的云数据库自定义权限如何设置指定字段来控制读写

    开发者您好,感谢您对EMAS Serverless的关注。云数据库表的权限管理请参考文档 https://help.aliyun.com/document_detail/435847.html 举例说明例如我有一张用户表 users,权限如下:{   '.read': 'request.auth.userId==resource.auth.userId',   '.write': 'request.auth.userId==resource.auth.userId' }此时用户A通过小程序sdk在表中插入一条数据:serverless.db.collection('users').insertOne({   name: '张三',   age: 18 })你将会在控制台看到一个插入了userid的数据:{   '_id': 'xxxx',   'name': '张三',   'age': 18,   'auth': {'userId': 'xxxxA'} }其中auth字段中的userid是系统为每个小程序用户生成的固定不变的值(前提是在控制台配置了第三方小程序秘钥鉴权)。那么这个数据将只允许用户A从客户端读写,如果用户B尝试去读写该条数据则不生效。权限的取值只有三种情况:false 禁止所有从客户端读/写true 允许所有从客户端读/写,此时从客户端插入数据则不会自带auth字段request.auth.userId==resource.auth.userId 只允许资源拥有者读写一般做法为了数据安全性,一般不建议直接从客户端读写数据库,而是在云函数中读写数据库,此时操作数据不受权限约束。在云函数中可以通过api getinfo https://help.aliyun.com/document_detail/435928.html 来获取当前客户端用户信息,自行在云函数中实现相应的业务权限逻辑。
    踩0 评论1
  • 回答了问题 2023-01-16

    EMAS云函数如何修改成北京时间

    开发者您好,感谢您对EMAS Serverless的关注,当前云函数暂不支持设置时区,默认为UTC+0,这也导致您遇到了这两个问题:d = nowdate.getDate(); // 获取到的日期却是昨天的在0点后执行该代码时,获取到的日期字符串仍然是“昨天”。new Date('2023/1/15').getTime()当您执行这段时,获取到的自然也是UTC+0地区的1月15日零点,此时北京是8点。解决方案根据年月日数字获取整点时刻的时间戳方案: 目前较好的方法就是-8小时,例如Date.prototype.minusHours = function(h) {     this.setTime(this.getTime() - (h*60*60*1000));     return this; } let expected = new Date('2023/1/15').minusHours(8).getTime();在0点后获取北京时间的年月日方案:获取UTC+0的日期之后再加上8小时Date.prototype.addHours = function(h) {     this.setTime(this.getTime() + (h*60*60*1000));     return this; } let expected = new Date().addHours(8); const y = expected.getFullYear(),     m = expected.getMonth() + 1,     d = expected.getDate();
    踩0 评论1
  • 回答了问题 2022-12-12

    如何在 云函数中异步调用另一个云函数,无需等待另一个云函数返回结果

    开发者您好,目前云函数还不提供异步调用模式,但是您可以通过以下方式实现类似效果。 首先定义函数B,执行一个五秒的任务: module.exports = async (ctx) => { ctx.logger.info(`B running: ${Date.now()}`) await sleep(5000) ctx.logger.info(`B finished: ${Date.now()}`) }; const sleep = ms => new Promise(r => setTimeout(r, ms)); 定义函数A,在A中我们需要拉起函数B,但是不关注B的运行结果: module.exports = async (ctx) => { ctx.logger.info(`A start: ${Date.now()}`) // 拉起函数B,注意前面不加 await ctx.mpserverless.function.invoke('functionB', {x: 1, y:2}) // 这一步是必须的,因为需要等待拉起函数B的请求发出去 await sleep(2000) ctx.logger.info(`A end: ${Date.now()}`) }; const sleep = ms => new Promise(r => setTimeout(r, ms)); 值得注意的是,我们在A中异步拉起函数B之后,加了个固定时间等待,这是因为如果不加等待,函数A运行结束会立即冻结,此时拉起函数B的请求可能还来不及发送出去。 最后,开发者需要知道凡是从SDK发起的函数运行请求最多只支持10S运行时间,如果您需要函数运行更长时间,可以使用定时任务来触发运行函数,此时最多支持600S运行时间。
    踩0 评论0
  • 回答了问题 2022-10-14

    小程序云serverless云数据库数据如何自增1

    开发者您好,云数据库底层是基于mongodb实现,因此使用 mongo 的操作符号 $inc 可以完成自增操作,使用哪个命令可以看您的需求,这里以命令 findOneAndUpdate 为例:首先,我有一张要操作的订单表:现在,我希望对 name 为 Cheese 的订单,quantity 字段自增 1,云函数代码如下:module.exports = async (ctx) => {    const res = await ctx.mpserverless.db.collection('orders').findOneAndUpdate(        {            name: 'Cheese'        },         {            $inc: { quantity: 1 }        },        {            returnNewDocument: true        }    )    return res};部署之后,点击运行,得到运行结果如下:执行结果: {'success':true,'result':{'value':{'date':'2021-03-13T11:21:39.000Z','quantity':17,'size':'small','price':12,'name':'Cheese','_id':'62dfa5caf5cf3ad91d4ba3a0'},'ok':1},'affectedDocs':1}此时 quantity 字段已经完成自增1了更多细节请参考 mongo 官方文档 $inc
    踩0 评论1
  • 回答了问题 2022-10-11

    如何解决emas的云函数HTTP跨域请求问题

    开发者您好,服务端默认对 127.0.0.1 / localhost 允许跨域。 您反馈的从静态网站访问HTTP云函数这种场景,经过判断符合安全要求,因此我们今天把域名 next.bspapp.com 添加了默认允许跨域。麻烦您再重试一下。另外,如果当您绑定了自定义域名之后,使用自定义域名访问网站依然会有跨域问题,因此您还需要通过 open API 添加跨域域名。输入域名和spaceID,点击下方调用即可完成添加。然后可以通过 ListCorsDomains 接口查询您绑定的跨域域名。https://next.api.aliyun.com/api/MPServerless/2019-06-15/AddCorsDomain?lang=TYPESCRIPT
    踩0 评论1
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息