云函数是这样的:
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
const _ = db.command
// 云函数入口函数
exports.main = async (event, context) => {
try {
return await db.collection(event.collection).where(event.where).update({
data: event.update
})
} catch (e) {
console.error(e)
}
}
调用是这样的:
//调用云函数
wx.cloud.callFunction({
name: 'updataothers',
data: {
collection: 'map_customer',
where: {
customer: that.data.vOptions.customer
},
update: {
location: new db.Geo.Point(that.data.location.longitude, that.data.location.latitude)
}
},
success: res => {
//提示
that.setData({
customerPositionState: '定位成功,请关闭小程序',
currentDialog: 'customerPositionState'
})
},
fail: res => {
//提示
that.setData({
customerPositionState: '定位失败,请点击 “我的位置” 重新定位',
currentDialog: 'customerPositionSuccess'
})
console.error
}
})
这样会调用失败,查看云函数日志,根本没有被调用。
经过反复测试,如果将update的location改为字符串或其他非坐标的变量,则可以成功updata。唯独updata坐标就不行。
以下data可成功updata:
location: that.data.location.longitude
//或
location: 'test'
求解决方法。谢谢
wx.cloud.callFunction({ name: 'updataothers', data: { collection: 'map_customer', where: { customer: that.data.vOptions.customer }, update: { location: { type: "Point", coordinates: [ that.data.location.longitude, that.data.location.latitude ] } } }, ... })
若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人