- 云函数中调用axios,怎么让数据同步?
我在云函数内调用axios查询阿里云数据,查询到后怎么让数据保持同步?代码如下: 主函数查询代码如下: console.log('Start') const res = await queryDevicePropertyStatus("a1FGCXEvXEE", list.data[i].deviceid) console.log("Success1") console.log(res) //查看返回response数据 console.log(res.Data) //查看返回response数据 函数如下: async function queryDevicePropertyStatus(productKey, deviceName) { const aliSdk = require("aliIot-sdk.js"); return await aliSdk.request({ Action: "QueryDevicePropertyStatus", ProductKey: "a1FGCXEvXEE", DeviceName: deviceName }, { method: "POST" }, (res) => { console.log("Success") console.log(res.Data) //查看返回response数据 }, (res) => { console.log("fail") }, (res) => { console.log("complete") }) 调用的axios代码部分如下: //封装request const request = (params, opts, success, fail, complete) => { if (method === 'POST') { opts.headers = opts.headers || {}; opts.headers['content-type'] = 'application/x-www-form-urlencoded' opts.data = canonicalize(normalized) } axios({ url: url, data: opts.data ? opts.data : {}, header: opts.headers, method: 'POST', dataType: 'json', responseType: 'json' }).then((res) => { if (typeof success === 'function') { success(res.data); } else { console.log("success is not a function"); } }) } 调试记录如下: [info] 函数被触发,正在执行中... index.js:70 Start index.js:73 Success1 index.js:74 undefined node.js:1 [error] 函数执行失败(耗时 1015ms) TypeError: Cannot read properties of undefined (reading 'Data') at d.exports.main [as handler] (D:\Downloads\Nodemcu\wechat_onenet\wechat_onenet_ZZJALY\cloudfunctions\timer\index.js:75:29) at processTicksAndRejections (node:internal/process/task_queues:96:5) node.js:1 [info] 调用 本地 云函数 'timer' 完成 (耗时 1018ms) index.js:168 Success index.js:169 {List: {…}} 我希望数据能同步运行,就是打印Start完了后,能打印Success,但是程序不等待数据,就直接运行到Success1了,并且打印res显示undefined。 还请懂的帮我看一下,多谢!
2023-10-24 - 调试显示:wx is not defined 能不能帮我把如下代码改成能在云函数里执行的代码?
const request = (params, opts, success, fail, complete) => { params = formatParams(params) params.Action = firstLetterUpper(params.Action) var defaultParams = _buildParams() params = Object.assign(defaultParams, params) var method = (opts.method || 'GET').toUpperCase() var normalized = normalize(params) var canonicalized = canonicalize(normalized) var stringToSign = `${method}&${encode('/')}&${encode(canonicalized)}` const key = 'u92uXpgg0jOuRf3wtd41Df1kxfqwAG' + '&' var signature = crypto.HMAC(crypto.SHA1, stringToSign, key, { asBase64: true }) normalized.push(['Signature', encode(signature)]) const url = method === 'POST' ? `${'https://iot.cn-shanghai.aliyuncs.com'}/` : `${'https://iot.cn-shanghai.aliyuncs.com'}/?${canonicalize(normalized)}` if (method === 'POST') { opts.headers = opts.headers || {}; opts.headers['content-type'] = 'application/x-www-form-urlencoded' opts.data = canonicalize(normalized) } wx.request({ url: url, data: opts.data ? opts.data : {}, header: opts.headers, method: method, dataType: 'json', responseType: 'text', success: function(res) { if (typeof success === 'function') success(res) else console.log("success is not a function") }, fail: function(res) { if (typeof fail === 'function') fail(res) else console.log("fail is not a function") }, complete: function(res) { if (typeof complete === 'function') complete() else console.log("complete is not a function") } }) } 以上代码在云函数运行,提示wx is not defined,有没有朋友能帮我把这段代码该成在云函数里可以用的。 多谢!
2023-10-17 - 代码从小程序移植到云函数的一些疑问?
具体问题如下: 在小程序内,我用如下方法访问并查询阿里云IOT的设备属性。 //首先,在js文件内顶部先定义, //aliIot-sdk.js等文件放在小程序本地目录的utils内。 const aliSdk = require("../../utils/aliIot-sdk.js") //在程序内直接调用aliSdk.request //查看设备连接状态,并刷新按钮状态 aliSdk.request({ Action: "QueryDevicePropertyStatus", ProductKey: app.globalData.productKey, DeviceName: id }, { method: "POST" }, (res) => { console.log(res) //查看返回设备属性返回值 上面的程序在小程序内是没有问题的。 但是我想在云函数里用,这部分的代码该怎么修改呢? 1、可以在云函数这样直接定义么?const aliSdk = require("../../utils/aliIot-sdk.js") 2、自己编写的目录utils内的文件aliIot-sdk.js需要上传到云端么?用怎么样的形式上传? 3、aliSdk.request({ Action: "QueryDevicePropertyStatus", ProductKey: app.globalData.productKey, DeviceName: id }, 这部分的代码需不需要改动一下?变成 const AccessToken_options = { ................. } let resultValue = await rp(AccessToken_options) 这种形式? 盼您回复,再次感谢!
2023-10-16 - 云函数调用API访问阿里云物联网例程?
最近在做一项开发,想用云函数通过API接口访问阿里云物联网,并查询设备的属性值。请问一下: 1、在云函数里能不能调用SDK程序,怎么添加和调用呢? 2、有没有云函数访问阿里云物联网的例程,我参考借鉴一下。 谢谢各位!
2023-10-16