数据库连接操作,以mongodb为例

  • 安装loopback-connector-mongodb

  • 修改datasources.json

//例子
{
"db": {
"name": "db",
"connector": "memory"
},
"mongodb": {
"host": "localhost",
"port": 27017,
"url": "",
"database": "development",
"name": "mongobd",
"connector": "mongodb"
}
}
  • common/models中添加数据类型,以users为例
//在`common/models/user.json`中设置

  "properties": {
"email": {
"type": "string",
"index": {
//因为这个特殊的属性值,需要添加`app.datasources.mongodb.autoupdate("users");`,这里放在server.js的boot调用中
"unique": true
}
},
"openid": {
"type": "string",
"required": true,
"index": {
"unique": true
}
},
"friends": {
"type": [
"object"
]
}
},
  • loopback提供了方便的数据库管理slc arc;
  • 管理Node.js Dependencies: 在下载包运行没问题的情况下,运行 npm shrinkwrap,生成`npm-shrinkwrap.json`文件;当新安装包之后,重新运行一次;
    • npm install --save
    • npm prune //清除多余包
    • npm shrinkwrap
    • npm shrinkwrap --dev //只检查dev中的包

models对象新增方法和调用

  • boot方法会将server中的json文件遍历一遍,其中会按照datasource.jsonmodel-config.json中的配置来加载model, 以user models为例,之后就可以通过server.models.user来获取;

  • 为了区分开发环境和运行环境加载的配置不同,可以设置datasource.production.jsonconfig.production.json,会自动在production环境下加载;

  • 给model添加方法

//在对应的models中, user.js

module.exports = function(User) {
User.ask = function() {
console.log('ask');
}; User.findByPage = function(page, count, cb) {
console.log('findByPage');
}; User.remoteMethod('findByPage', {
.........
});
}; //调用remoteMethod之后,models的方法就暴露出去来
//一般直接根据id获取数据比根据其他属性要快

var User = app.models.users;

//创建

User.create(user, function(err, user({

});

//查找; find输出的是找到的数据组成的数组;findOne输出找到的第一个对象

User.find({id: 0}, function(err, user) {
..
}); //修改, 注意这里是对findOne返回的对象进行修改,find返回的是数组 person.name = 'new'; person.save();
/person.save({"validate": true, "throws": true}, function(err, person){
....
}) //多个修改 Person.updateAll({"age":10},{"age":20}, function(err, count) { } //根据id删除数据 Person.destroyById(0 , function(err) {
....
}); //根据条件删除数据 Person.destroyAll({name:"jinks", age:23}, function(err){
....
})

设置中间件, middleware.json

  • loopback中在server/middleware.json中设置,其中定义的包括:
initial - 初始化加载
session - 关于session部分
auth - 处理认证
parse - 关于request.body.
routes - HTTP路径相关的
files - 文件处理,包括静态文件
final - 错误与错误请求处理
  • 利用before和after可以定义顺序:
initial:before
initial
initial:after
  • 一个默认的文件形式

{
"initial:before": {
"loopback#favicon": {}
},
"initial": {
"compression": {}
},
"session": {
},
"auth": {
},
"parse": {
},
"routes": {
},
"files": {
},
"final": {
"loopback#urlNotFound": {}
},
"final:after": {
"errorhandler": {}
}
}
  • 获取req.body的设置
  "parse": {
"body-parser#json": {},
"body-parser#urlencoded": {
"params": {
"extended": true
}
}
},
  • 使用morgan 后台打印访问路径
//这里设置的方式为`dev`

  "routes:before": {
"morgan": { //安装
"params": "dev"
}
}
  • 配置静态文件
  "files": {
"loopback#static": {
"params": "$!../client"
}
},

除了在middleware.json中配置之外,还可以直接在js文件中设置

server/server.js
var loopback = require('loopback');
var morgan = require('morgan');
var errorhandler = require('error-handler'); var app = loopback(); app.middleware('routes:before', morgan('dev'));
app.middleware('final', errorhandler());
app.middleware('routes', loopback.rest());
  • 配置signed cookie:
{
"cookie-parser": {
"params": "key"
}
}

config.json里的配置文件可以通过app.get('attr')获得值

调试

  • slc debug .

loopback 02的更多相关文章

  1. Hbase学习02

    第2章 Apache HBase配置 本章在“入门”一章中进行了扩展,以进一步解释Apache HBase的配置. 请仔细阅读本章,特别是基本先决条件,确保您的HBase测试和部署顺利进行,并防止数据 ...

  2. BizTalk RosettaNet解决方案之Loopback

    本教程使用 BizTalk Accelerator for RosettaNet (BTARN) 在一台计算机上模拟本组织与合作伙伴组织之间的流程实施情况. 创建本组织 “BizTalk <版本 ...

  3. Ubuntu 14.04.02 安装openvswitch-2.3.1

    Open vSwitch安装 安装好操作系统 # lsb_release -a LSB Version: core-2.0-amd64:core-2.0-noarch:core-3.0-amd64:c ...

  4. Docker系列02—Docker 网络模式

    一.Docker的四种网络模式 1.Docker 的四种网络模式: Bridge container 桥接式网络模式 Host(open) container 开放式网络模式 Container(jo ...

  5. Linux学习 - 02 使用 - Centos8 - 网络配置相关

    『Centos8 网络配置』 题外话:最近太忙,利用仅有的周末空闲时间记录点东西,草率了. 问题1:安装 Centos8.2 minimal 过程中,只是设置了 WiFi的静态IP,没有进行[以太网] ...

  6. Kotlin中变量不同于Java: var 对val(KAD 02)

    原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02) 作者:Antonio Leiva 时间:Nov 28, 201 ...

  7. Android游戏开发实践(1)之NDK与JNI开发02

    Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...

  8. iOS系列 基础篇 02 StoryBoard 故事板文件

    iOS基础 02 StoryBoard 故事板文件 目录: 1. 故事板的导航特点 2. 故事板中的Scene和Segue 3. 本文最后 在上篇HelloWorld工程中有一个Main.storyb ...

  9. Android 学习笔记之一 “Unable to establish loopback connection”

    今天碰到一个错误:Unable to establish loopback connection,在网上找各种方法都解决不了,后来看一个帖子说是要关闭系统防火墙,尝试了下还是不行.最后是进任务管理器杀 ...

随机推荐

  1. Mysql 基础 高级查询

    在西面内容中    car  和  nation   都表示 表名 1.无论 高级查询还是简单查询   都用  select.. from..语句   from  后面 加表名  可以使一张表也可以是 ...

  2. mybatis延迟加载

    配置完成后可能会报错Cannot enable lazy loading because CGLIB is not available. Add CGLIB to your classpath 是由于 ...

  3. java jsp调用shell(带参数)脚本并返回值

    test.jsp <%@ page language="java" import="java.util.List,java.util.ArrayList,java. ...

  4. Excel计算一列的和sum(A:A)

    在公式中输入=sum(A2:A6),计算的是A列2-6行的和 =sum(A:A)计算的是A列全部的和

  5. centOS填坑笔记(一)

    第一次使用centOS安装软件时,对二进制包的./configure进行配置时(./configure是源代码安装的第一步,主要的作用是对即将安装的软件进行配置,)报错:WARNING: failed ...

  6. CityEngine基于规则贴图的实现技巧

    转自:http://blog.sina.com.cn/s/blog_841eeb5201010p3e.html CityEngine在贴图的实现过程有两种方式:第一种是通过i(geometryPath ...

  7. 解决客户端访问https报错

    现象: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure at com.sun.net.ssl. ...

  8. java 资源监控

    http://blog.csdn.net/huangzhaoyang2009/article/details/11860757 http://blog.csdn.net/cuker919/articl ...

  9. ecgcd(解二元不定方程)

    题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=775 关于扩展欧几里得算法还是推一遍好啦: 有方程:a*x+b*y=d=gcd(a, b) ...

  10. NYOJ之字符串逆序输出

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAswAAAJaCAIAAAC0jIYTAAAgAElEQVR4nO3du27rSpbGcb+Ecz2IU+ ...