1、node在linux环境下的安装
方案一:直接拉淘宝的node包进行解压安装,没试过。
方案二:通过安装NVM,直接一键安装,见4.23书城node安装 。
2、node自带许多模块,其中核心是http模块
let http = require('http')
let url = require('url')
let util = require('util')
let server = http.createServer((req, res) => {
res.statusCode = 200
res.setHeader('Content-Type', 'text/plain; charset=utf-8')
console.log("url:" + req.url) // 仅返回地址字符串
console.log("parse:" + url.parse(req.url)) // [Object],不利于阅读
console.log("inspect:" + util.inspect(url.parse(req.url))) // 将对象展开成字符串,方便阅读
res.end(util.inspect(url.parse(req.url))) // 在浏览器端显示文本
})
server.listen(3000, '127.0.0.1', () => {
console.log("Listening at http://127.0.0.1:3000...")
})
运行 node Demo.js,浏览器输入localhost:3000 回车,得到以下console.log
其中引申出
data.toString() // 可将buffer对象转成字符串或者html文档
JSON.parse(data) // 可将 数据 转成json对象
3、MongoDB命令行 shell脚本中执行语句
MongoDB 创建 Database 和 Collection
shell 运行 mongo
启动完毕后 shell 窗口不要关闭,另开一个窗口。
开机自启动(服务)
- 以管理员身份运行 shell
PS E:\MongoDB\bin> ./mongod --install --serviceName MongoDB --serviceDisplayName MongoDB --logpath E:\MongoDB\data\log\mongodb.log --dbpath E:\MongoDB\data\db
- 开启服务 MongoDB 即可
就会与 mongo 连接, 基本操作如下:
查看当前所在的数据库
创建数据库+创建集合
删除数据库(先use才能删除)
删除集合
删除集合中的数据
查询集合条目
show collections
查询集合,注: db.user.find().pretty() 是格式化集合
查询第一条数据
查询某一条数据(field)
查询某列(element),直接输1是显示全部列内容。
条件查询(大于$gt,小于$lt,等于$eq)
更新集合 (中间是逗号)
更新集合之清空某字段
shells行,import数据,入集合(开启服务后,需另起cmd到bin目录下)
mongoose 创建 Schema 模型如下:
4、mongoose是专为nodeJs应运而生的,非常便捷。分页代码如下:
router.get('/', function (req, res, next) {
// req是get请求,直接params取参或者query对象取参,| 0 是字符串取整
const page = req.param('page') | 0
const pageSize = req.param('pageSize') | 0
const sort = req.param('sort') | 0
const skip = (page - 1) * pageSize | 0 // 第几页则跳过x条数据
const params = {} // 默认为空
// .find查询所有数据,.skip默认跳过几条数据。并获取pageSize条
const goodsModel = Goods.find(params).skip(skip).limit(pageSize)
// 链式调用.sort排序,sort 1升序 -1降序
goodsModel.sort({'salePrice': sort})
// 非普通find查询,已经过步骤,所以需要exec进行结果返回
goodsModel.exec(function (err, doc) {
if (err) {
res.json({
status: 1,
msg: err.message
})
} else {
res.json({
status: 0,
msg: 'success',
result: {
count: doc.length,
list: doc
}
})
}
})
})
以上是express建立一级路由/goods下的二级根路由/,返回结果。
5、vue-infinite-scroll 可以实现简单的底部刷新功能。
具体用法就是检测,绑定的div距离视口底部的偏移来回调一个函数。
// 模板中
<div v-infinite-scroll="loadMore"
infinite-scroll-disabled="busy"
infinite-scroll-distance="20">加载中...</div>
// methods中
loadMore () {
// 此处是ajax的分页功能,page++
// 将请求到额第++页数据和前一个数据组合arr.concat(newArr)。
}
6、mongoose在nodejs的环境下的用法。
// goods.js 模块导出文件中
const express = require('express')
const router = express.Router()
const mongoose = require('mongoose')
const Goods = require('../models/goods')
// 连接mongodb数据库
mongoose.connect('mongodb://127.0.0.1:27017/dumall', {
useNewUrlParser: true
})
mongoose.connection.on("connected", function () {
console.log('MongoDB connected success.')
})
mongoose.connection.on("error", () => {
console.log('MongoDB connected fail.')
})
mongoose.connection.on("disconnected", () => {
console.log("MongoDB connected disconnected.")
})
router.get('/', function (req, res, next) {
// req是get请求,直接param拿参,| 0 是字符串取整
const page = req.query.page | 0
const pageSize = req.query.pageSize | 0
const sort = req.query.sort | 0
const skip = (page - 1) * pageSize | 0 // 第几页则跳过x条数据
const priceLevel = req.query.priceLevel // 价格过滤等级,字符串
let params = {} // 默认为空
switch (priceLevel) {
case '0': priceGt = 0; priceLt = 100; break
case '1': priceGt = 100; priceLt = 500; break
case '2': priceGt = 500; priceLt = 1000; break
case '3': priceGt = 1000; priceLt = 5000; break
case 'all': break
}
// 判断是否有等级
if (priceLevel !== 'all') {
params = {
salePrice: {
$gt: priceGt,
$lt: priceLt
}
}
}
// .find查询所有数据,.skip默认跳过几条数据。并获取pageSize条
const goodsModel = Goods.find(params).skip(skip).limit(pageSize)
// 链式调用.sort排序,sort 1升序 -1降序
goodsModel.sort({'salePrice': sort})
// 非普通find查询,已经过步骤,所以需要exec进行结果返回
goodsModel.exec(function (err, doc) {
if (err) {
res.json({
status: 1,
msg: err.message
})
} else {
res.json({
status: 0,
msg: 'success',
result: {
count: doc.length,
list: doc
}
})
}
})
})
module.exports = router
主要是mongoose.connect()方法,exec执行回调方法,对集合排序方法sort(),以及find({})查询对象方法。