loopback 02
数据库连接操作,以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.json
和model-config.json
中的配置来加载model
, 以user models
为例,之后就可以通过server.models.user
来获取;为了区分开发环境和运行环境加载的配置不同,可以设置
datasource.production.json
和config.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的更多相关文章
- Hbase学习02
第2章 Apache HBase配置 本章在“入门”一章中进行了扩展,以进一步解释Apache HBase的配置. 请仔细阅读本章,特别是基本先决条件,确保您的HBase测试和部署顺利进行,并防止数据 ...
- BizTalk RosettaNet解决方案之Loopback
本教程使用 BizTalk Accelerator for RosettaNet (BTARN) 在一台计算机上模拟本组织与合作伙伴组织之间的流程实施情况. 创建本组织 “BizTalk <版本 ...
- 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 ...
- Docker系列02—Docker 网络模式
一.Docker的四种网络模式 1.Docker 的四种网络模式: Bridge container 桥接式网络模式 Host(open) container 开放式网络模式 Container(jo ...
- Linux学习 - 02 使用 - Centos8 - 网络配置相关
『Centos8 网络配置』 题外话:最近太忙,利用仅有的周末空闲时间记录点东西,草率了. 问题1:安装 Centos8.2 minimal 过程中,只是设置了 WiFi的静态IP,没有进行[以太网] ...
- Kotlin中变量不同于Java: var 对val(KAD 02)
原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02) 作者:Antonio Leiva 时间:Nov 28, 201 ...
- Android游戏开发实践(1)之NDK与JNI开发02
Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...
- iOS系列 基础篇 02 StoryBoard 故事板文件
iOS基础 02 StoryBoard 故事板文件 目录: 1. 故事板的导航特点 2. 故事板中的Scene和Segue 3. 本文最后 在上篇HelloWorld工程中有一个Main.storyb ...
- Android 学习笔记之一 “Unable to establish loopback connection”
今天碰到一个错误:Unable to establish loopback connection,在网上找各种方法都解决不了,后来看一个帖子说是要关闭系统防火墙,尝试了下还是不行.最后是进任务管理器杀 ...
随机推荐
- JavaScript高级程序设计学习笔记--引用类型
Object类型 对象字面量表示法: var person={ name:"Nicholas", age:29, 5:true }; 这人例子会创建一个对象,包含三个属性:name ...
- Tomcat中文乱码问题的原理和解决方法
1) 更改 D:\Tomcat\conf\server.xml,指定浏览器的编码格式为“简体中文”: 方法是找到 server.xml 中的 <Connector port="8080 ...
- svn 默认忽略静态库 .a文件解决办法
我也是在向SVN服务器上传文件时,遇到了这个问题,文件上传后,再下载后发现所有的.a文件全部丢失,后来才知道是上传文件的时候.a文件根本就没传上去,查找原因才知道上传的时候.a文件被过滤掉了,后来找到 ...
- Linux 底下使用C语言的 单链表 ,双链表,二叉树 读取文件,并排序
直接上代码 单链表Linux读文件排序: 双链表Linux读取文件排序: 二叉树LinuX读取文件并排序:
- Swift - 让程序挂起后,能在后台继续运行任务
1,程序的挂起和退出 由于iOS设备资源有限.当用户点击了home键,或者另一个应用程序启动了.那么原先那个程序便进入后台被挂起,不是退出,只是停止执行代码,同时它的内存被锁定.当应用程序恢复时,它会 ...
- myeclipse相关
:) MyEclipse 10.7以后开始支持JDK1.7,修改settings下面的配置文件没卵用.
- JavaScript基础——添加错误处理
JavaScript编程的一个重要组成部分,是添加错误处理来应对可能会出现的问题.默认情况下,如果因为你的JavaScript中的问题二产生了一个代码异常,那么脚本就会失败并且无法完成加载.这通常不是 ...
- rpm -qc 来查找安装包的配置文件
rpm -qc elasticsearch /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/jvm.options /etc/elast ...
- Clr Via C#读书笔记---CLR寄宿和应用程序域
#1 CLR寄宿: 开发CLR时,Microsoft实际是将他实现成包含在一个dll中的COM服务器.Microsoft为CLR定义了一个标准的COM接口,并为该接口和COM服务器分配了GUID.安装 ...
- Python 打包程序判断是否已经运行
代码如下: # -*- coding: UTF8 -*- from win32com.client import Dispatch import win32com import sys, os fro ...