微信小程序 + thinkjs + mongoDB 实现简单的前后端交互
说明:这段时间跟老师学习了一下
mongodb数据库,这次也是第一次搭建后台服务,出了不少差错,特此来复盘一下,非常感谢对我提供帮助的同学~
一、使用 thinkjs + mongodb 创建后台服务
1.安装 thinkjs
安装thinkjs工具包
npm install -g think-cli
2.创建 thinkjs 项目
thinkjs new demo;
cd demo;
npm install;
npm start;
3.让框架支持 mongo 模型
在demo项目的config文件夹中的extend.js文件中添加think-mongo模块
const mongo = require('think-mongo');
module.exports = [
mongo(think.app)
]
4.连接 mongodb
安装think-mongo
npm install think-mongo
修改config文件夹下的adapter.js文件的数据库
exports.model = {
type: 'mongo',
common: {
logConnect: isDev,
logger: msg => think.logger.info(msg)
},
mongo: {
host: '127.0.0.1',
database: 'mytest', // 自己创建的数据库名字
port: 27017,
user: '',
password: ''
}
};
5.创建 mongodb 数据库
在demo项目根目录下新建一个db文件夹,用于存放数据,并开启数据库服务。
注意:以后也要在此文件夹下开启服务,不然后台连接不到数据库
mkdir db
cd db
mongod --dbpath=./
windows用户这里使用powershell终端,请勿使用cmd命令窗口。
6.添加路由
修改 index 控制器
进入controller文件夹中的index文件夹当中,修改返回数据
module.exports = class extends Base {
indexAction() {
return this.json({nihao: '\'nihao\''});
}
};
7.添加自己的控制器
新建一个任意名字的.js文件,然后自定义控制器返回的内容
const Base = require('./base.js');
module.exports = class extends Base {
async indexAction() {
// 获取从微信小程序传过来的 data 数据
const data1 = this.post('data');
// 将获取的数据 data1 添加到 student 表中
const a = await this.mongo('student').add(data);
// 从控制台输出 a 的地址
console.log(a);
return this.success('success');
}
async addAction() {
const test = 'hello, world';
return this.json({test});
}
}
8.添加一个 mongodb 的控制器
在controller文件夹新建一个user.js文件,里面写入控制器的内容
const Base = require('./base.js');
module.exports = class extends Base {
async indexAction() {
// controller 中实例化模型
const user = await this.mongo('user').find();
if (think.isEmpty(user)) {
return this.fail();
} else {
return this.success(user);
}
}
};
9.添加 model 文件
对每个模型进行各种操作,例如这里读取数据
module.exports = class extends think.Mongo {
find() {
return this.model('user').select();
};
}
二、配置微信小程序
微信小程序的注册与创建这里就不赘述了,直接进入主题
1.在页面加载函数中加入wx.request
在创建的微信小程序的index.js文件中加入如下代码
Page({
onLoad: function() {
wx.request({
// 这里的 test 是上面第7步创建的自己的控制器的名字
url: 'http://127.0.0.1:8360/test/index'
method: 'POST',
data: {
data: 'hello'
},
success: function (res) {
console.log(res.data)
}
})
}
})
三、检验前后端交互
1.开启demo服务
在demo项目目录下
npm start;
2.开启mongodb数据库
在demo目录下的db文件夹内开启数据库服务
cd db
mongod --dbpath=./
创建数据库和集合
use database
db.createCollection("collection")
3.编译微信小程序
结束
预期结果:
数据库中出现了微信小程序中添加的 data 数据,则前端数据成功发送给后台存入数据库;
微信小程序成功接收到后台返回的success信息;
demo项目控制台输出了一串接收数据的变量的地址。
至此,就完成了一个简单的前后端交互啦~
微信小程序 + thinkjs + mongoDB 实现简单的前后端交互的更多相关文章
- 微信小程序(一)--简单的介绍
转自:https://developers.weixin.qq.com/miniprogram/dev/index.html 响应的数据绑定 框架的核心是一个响应的数据绑定系统. 整个小程序框架系统分 ...
- 微信小程序:wx.request之post请求后端无法获取数据的问题
前言:小程序的开发中总是踩到各种坑,看文档也不知所云: 例如当我们在写微信小程序接口时,method请求方式有POST和GET两种,为了数据安全,我们会偏向于使用POST请求方式访问服务器端: 问题: ...
- 微信公众号商城、小程序商城、H5商城 实例 前后端源码
CRMEB客户管理+电商营销系统 https://gitee.com/ZhongBangKeJi/CRMEB 演示站后台: http://demo.crmeb.net/admin 账号:demo 密 ...
- 微信小程序传数组(Json字符串)到Java后端
一:小程序端: wxml中代码: <!--index.wxml--> <view> <view> <button bindtap="onShow&q ...
- Node之简单的前后端交互
node是前端必学的一门技能,我们都知道node是用的js做后端,在学习node之前我们有必要明白node是如何实现前后端交互的. 这里写了一个简单的通过原生ajax与node实现的一个交互,刚刚学n ...
- 微信小程序实战--开发一个简单的快递单号查询
功能如图: 虽然工作中只负责小程序后台开发,但是还是小程序开发产生了浓厚的兴趣,官方文档也是超级详细了 这里就简单做一个快递单号的查询: 新建一个page: 接着就可以写wxml了.这里用一个简单的i ...
- 微信小程序wx.request的简单封装
前言 之前写小程序,每次请求后台时都直接调用原生的API,wx.request,每次都要写url,data,回调函数等,正好前段时间,小程序项目需要添加新内容,趁此机会,做一个封装的请求工具,比较简单 ...
- 微信小程序 - 非Form数据怎么发送到后端?
通过设置异步缓存,就可以做到 wx.setStorageSync('imgs',imglist); 最后的提交信息:
- 微信小程序实现简单的2048
这两天心血来潮,用微信小程序写了一个简单的2048,欢迎各位老铁围观,提出宝贵意见.这里我从0到1赘述一下个人实现流程: 首先去微信公平台(https://mp.weixin.qq.com/)注册一个 ...
随机推荐
- NVDLA中Winograd卷积的设计
在AI芯片:高性能卷积计算中的数据复用曾提到,基于变换域的卷积计算--譬如Winograd卷积--并不能适应算法上对卷积计算多变的需求.但Winograd卷积依旧出现在刚刚公开的ARM Ethos-N ...
- redis入门(二)
目录 redis入门(二) 前言 持久化 RDB AOF 持久化文件加载 高可用 哨兵 流程 安装部署 配置技巧 集群 原理 集群搭建 参考文档 redis入门(二) 前言 在redis入门(一)简单 ...
- Rust入坑指南:有条不紊
随着我们的坑越来越多,越来越大,我们必须要对各种坑进行管理了.Rust为我们提供了一套坑务管理系统,方便大家有条不紊的寻找.管理.填埋自己的各种坑. Rust提供给我们一些管理代码的特性: Packa ...
- Office中国在这个开个博客
Office中国在这个开个博客,先来show一下我的网站 Office中国/Access中国 http://www.office-cn.net Office中国百科: http://baike. ...
- Java设计模式:23种设计模式
1. 软件设计模式概述 2. GoF 的 23 种设计模式的分类和功能 3. UML中的类图及类图之间的关系 4. 开闭原则——面向对象设计原则 5. 里氏替换原则——面向对象设计原则 6. 依赖倒置 ...
- 第三十四章 POSIX消息队列
POSIX消息队列相关函数 mq_open 功能: 用来创建和访问一个消息队列 原型: mqd_t mq_open(const char *name, int oflag); //只能用来打开消息队列 ...
- TypeError: expected string or bytes-like object
在写Python代码的时候,遇到了"TypeError: a bytes-like object is required, not 'str'"错误,此处实验机器的Python环境 ...
- [考试反思]0903NOIP模拟测试36:复始
因为多次被说颓博客时间太长于是 真香 恢复粘排行榜的传统. 大体上就是,T1A的前三,剩下的T2A的排名,再然后按照T3暴力得分排名. T1是个暴力.3个A的5个得分的.数据点极强爆零率极高. 我的思 ...
- 大数据之路day04_2--经典bug(equals与==比较不同,break的跳出不同)
一.equals与==比较不同 在实现某个人去5个商场去购物,控制台输入是否购物(Y/N)的时候,在比较出了问题,发现无论输入什么都是false,后来查阅资料发现,字符串的比较,==和equals不一 ...
- 『题解』Codeforces2A Winner
Portal Portal1: Codeforces Portal2: Luogu Description The winner of the card game popular in Berland ...