uniapp云开发

unicloud 开发:

构成: 

1, 云函数

2,云数据库: json格式的表

3,云存储和cdn 

云函数  运行在云端的函数

1,这个函数是执行在严格环境下的函数(避免使用没有声明的变量)

2, 从数据库差数据需要使用await 来拿到结果 

3, 参数 ( event  ,context ),event 是客户端传入的参数 , context 包含了 系统调用信息和运行状态  

4, 客户端调用云函数   uniCloud.callFunctions(){}

5,  记得改完 上传并部署 

 

1, 客户端调用 
uniCloud.callFunction({
				name:'holy-test',  // 云函数名称
				success(res){
					console.log(res);
				},
				fail(e){
					console.log(e)
				}
			})

2, 实际云函数编写 
'use strict';
exports.main = async (event, context) => {
	//event为客户端上传的参数
	console.log('event : ', event)
	console.log('context : ', context)
	//返回数据给客户端
	return {
		"data":{"name":'liming',"age":20},
		"code":0,
		"message":'hi',
	}
};



****************************  使用云函数对数据库进行增删改查 

//  获得数据库 引用
const db = uniCloud.database();


// 获取 表的引用
let collection = db.collection('User')


1, 增
let res =await collection.add([
		{"name":"vue"},
		{"name":"js"}
	])
	
	console.log('res : ', JSON.stringify(res))
	

2, 删 

// 查到 id ‘5f4b74af45d03400012d7c31’ 删除 
	let res =await collection.doc('5f4b74af45d03400012d7c31').remove();
	
	console.log('res : ', JSON.stringify(res))

3, 更新

两种 update 和set  
update  只是在原来有的 才能更新, 否则失败
set 如果原来有的数据没有字段 就设置字段, 没有这条的就新增 

update 

// 查到 id ‘5f4b74af45d03400012d7c31’ update 
	let res =await collection.doc('5f4b747845d03400012d7b4c').update({
		name:'heiheihei'
	});
	
	console.log('res : ', JSON.stringify(res))

set   已有 name属性 没有type属性可以更新成功, 如果2个都已经存在了,不会更新成功 ,
// 查到 id ‘5f4b74af45d03400012d7c31’ set 
	let res =await collection.doc('5f4b747845d03400012d7b4c').set({
		name:'hahaha',
		type:'vue2'
	});
	
	console.log('res : ', JSON.stringify(res))
 
 没有这条的就新增 

// 没有 id 123456 set  会新增, 注意此时 id必须为数字
	let res =await collection.doc(123456).set({
		name:'test',
		type:'vue-test'
	});
	
	console.log('res : ', JSON.stringify(res))





4,查   


 (1) doc 查id 再get 

  	//get 
	let res =await collection.doc('5f4b747845d03400012d7b4c').get();
	
	console.log('res : ', JSON.stringify(res))

  (2) where  使用查询条件

   
  //where
	let res =await collection.where({'name':'xiaoming'}).get();
	
	console.log('res : ', JSON.stringify(res))


  (3) 聚合   更加精细化的搜索 




 

 

 

********* ***********************************

如何使用 

1, 创建项目时 选择 使用云服务, 需要注册账号 并且实名认证 登陆

2, 去mainfest 基础设置获取应用标识 

3, 确保 登录 和应用标识都存在的情况下 , 创建云服务空间 ,填写不重复的名称

4, 链接服务空间 

5, 在cloudfunctions 里创建云函数

6 , 右键 上传并运行 ,等于上传部署并且运行 ,可以发现event的打印结果

 7,右键 打开webcloud 控制台,可以看到:

  (1)云函数 观察用云函数

   (2)云数据库 进行数据的操作, 表和字段 ,字段必须是完整的json格式 双引号 

   (3)云存储  进行文件操作  

   (4)跨域配置, 只要是h5端调用接口需要, localhost ,127.0.0.1还有dev启动自动生产的ip 做了特殊配置,本地调试无需配置

 

 

*******************************************

  上传文件  

  上传图片

data() {
            return {
                imgs:null
            }
        },

    upload(){
                uni.chooseImage({
                    count:1 , 
                    success:(res)=>{
                    //  this.uploadToCloud ( res.tempFiles[0]);
                    console.log(res)
                    uniCloud.uploadFile({
                        filePath : res.tempFilePaths[0],
                        cloudPath: res.tempFiles[0].name,
                        success:(imgRes)=>{
                            console.log(imgRes)
                            if(imgRes.success){
                                this.imgs = imgRes.fileID
                                this.uploadToCloud(imgRes.fileID)
                            }
                        }
                    })
                    },
                    fail() {
                        
                    }
                })
                
            },
            uploadToCloud(fileId){
                uniCloud.callFunction({
                    name:'holy-test', 
                    data:{ imgUrl: fileId},
                    success(res){
                        console.log(res);
                    },
                    fail(e){
                        console.log(e)
                    }
                })
            },

 

云端函数 

'use strict';

//  获得数据库 引用
const db = uniCloud.database();

exports.main = async (event, context) => {
     // 获取 表的引用
     let collection = db.collection('user')
    
    //set
    let res =await collection.doc('5f4b689145d03400012d4d98').set({
        imgUrl: event.imgUrl
    });
    
    console.log('res : ', JSON.stringify(res))
    
    
    console.log(res)
    
    //返回数据给客户端
    return {
        "data":res,
        "code":0,
        "message":'success',
    }
};
 

  删除图片

    delImg(){
                uniCloud.deleteFile({
                    fileList:[this.imgs] ,// 数组
                    success:(res)=>{
                        this.imgs = res.requestId
                        console.log(res)
                    },
                    fail(e) {
                        console.log(e)
                    }
                })
            }

****************

数据库 初始化可以使用 db_init.json 点击右键选择数据库来进行对数据库初始化操作

 

 

 

 

 

你可能感兴趣的:(uniapp云开发)