使用leancloud给简历加数据库,实现留言功能

LeanCloud 介绍

一个自带数据库和增删改查(CRUD)功能的后台系统。

拥有:

  • 登录注册、手机验证码功能(收费)
  • 存储任意信息
  • 读取任意信息
  • 搜索任意信息
  • 删除任意信息
  • 更新任意信息

LeanCLoud基本使用

我在此演示一下基本的使用.
下面演示如何使用 LeanCloud 存一个 Hello World到他的后台数据库上.
分为下面几步:

1.创建一个应用 resume
2.引入 av-min.js,得到 window.AV
3.初始化 AV 对象(代码直接拷)
4.新建一条数据来测试(代码直接拷,测试)

demo

第一步:首先创建一个应用


image.png

进入


image.png

第二步,通过CDN引入,并初始化
html脚本引入
<!-- 存储服务 -->
<script src="//cdn.jsdelivr.net/npm/leancloud-storage@3.11.1/dist/av-min.js"></script>

新建一个message.js文件,加入如下代码

var APP_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx';
var APP_KEY = 'xxxxxxxx';

AV.init({
  appId: APP_ID,
  appKey: APP_KEY
});//id和key比较敏感用xxx代替

ping一下

ping "w3ti0i9b.api.lncld.net"

加入如下测试代码

var TestObject = AV.Object.extend('TestObject');
var testObject = new TestObject();
testObject.save({
  words: 'Hello World!'
}).then(function(object) {
  alert('LeanCloud Rocks!');
})

可以得到后台


image.png

可见

var TestObject = AV.Object.extend('TestObject');//创造了一个新class
testObject.save({
  words: 'Hello World!'//用TestOBject构造testObject,save的字符串就是传入后台的字符串。

下面用mvc模式搭建完整的留言功能
var view = document.querySelector("section.message");

我们对数据库的操作是获取和存储。

  var model = {
    fetch: function() {
      var query = new AV.Query("Message")
      return query.find()
    }, //获取一个promise对象,记录后台已有的数据显示在页面上。
    save: function(name,content) {
        var Message = AV.Object.extend("Message")
        var message = new Message()
       return message
          .save({
            name: name,
            content: content
          })
    }
  }; //获取一个promise对象,是用户新生成的留言数据,存储到后台。
 

下面理清楚一下逻辑
1.首先需要从后台获取历史数据,并显示在页面上。
2.对于用户新生成的留言存储到后台,并无刷新地显示在页面上。


var controller = {
    view: null,
    model:null,
    messagesList: null,
    init: function(view) {
      this.view = view
      this.model =model
      this.messagesList = view.querySelector("#messageList");
      this.form = view.querySelector("form");
      this.initAV();
      this.loadMessages();
      this.bindEvents();
    },//进行初始化操作
    initAV: function() {
      var APP_ID = "W3ti0I9b2cFxpPiitq31a9U8-gzGzoHsz";
      var APP_KEY = "bSj0qYqb7ng9ymDI2FvpMYoq";

      AV.init({
        appId: APP_ID,
        appKey: APP_KEY
      });
    },//初始化leancloud
    loadMessages: function() {
      //获取历史留言
      this.model.fetch().then(
        messages => {
          let array = messages.map(item => item.attributes);
          array.forEach(item => {
            let li = document.createElement("li");
            li.innerText = `${item.name}:${item.content}`;
            let messagesList = document.querySelector("#messagesList");
            messagesList.appendChild(li);
          });
        },
        () => {}
      );
    },//获取后台历史留言数据,其内容存储在attributes属性上,通过map遍历返回一个数组。在用foreach方法新建<li>显示历史留言。
    bindEvents: function() {
      this.form.addEventListener("submit", e => {
        e.preventDefault();
        this.saveMessage();
      });//事件绑定,阻止form表达提交默认刷新事件。
    },
    saveMessage: function() {
      let myform = this.form;
      let content = myform.querySelector("input[name=content]").value;
      let name = myform.querySelector("input[name=name").value;
        this.model.save(name,content).then(object => {
          let li = document.createElement("li");
          li.innerText = `${object.attributes.name}:${
            object.attributes.content
          }`;
          let messagesList = document.querySelector("#messagesList");
          messagesList.appendChild(li);
          myform.querySelector("input[name=content]").value = "";
        });//获取新建留言,并直接添加到页面。
    }
  };
  controller.init(view,model);
}.call();

注意点
promise中
例如

query.find().then(fn1,fn2)
.then(fn3.fn4)

含义是:
如果成功执行回调函数fn1,如果失败执行回调函数fn2.
如果fn1和fn2都没有报错,那么执行fn3,如果fn1 和fn2中有一个报错,那么执行fn4

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容