编写数据类型的schema
import { Schema, Model, model, Document }
from
'mongoose';
export
interface OrderDocument
extends Document {
user: string;
type: string;
status: number;
currencyCode: string;
paymentTypes: string;
price: string;
unit: string;
quantity: number;
minAmount: number;
maxAmount: number;
description: string;
createTime?: string;
updateTime?: string;
}
设置schema的是否必须以及类型以及关联的数据库
const OrderSchema: Schema =
new Schema({
user: { type: Schema.Types.ObjectId, require:
true, ref:
'User'},
price: { type: String, required:
true },
type: { type: String, required:
true, default:
'sell', enum: [
'sell',
'buy'] },
status: { type: Number, required:
true, default:
0, enum: [
0,
1,
2] },
currencyCode: { type: String, required:
true, default:
'btc' },
paymentTypes: { type: String, required:
true, default:
'1' },
unit: { type: String, required:
true, default:
'CNY' },
quantity: { type: Number, required:
true, default:
0 },
minAmount: { type: Number, required:
true, default:
0 },
maxAmount: { type: Number, required:
true, default:
0 },
description: String,
createTime: { type: Date, default: Date.now },
updateTime: { type: Date, default: Date.now },
});
将整个schema导出为文档类型
export
const OrderModel: Model<OrderDocument> = model(
'Order', OrderSchema);
mongoose用法
1. 查询
OrderModel.find()
OrderModel.findById(id)
OrderModel.findOne()
2. 更新
orderModel.update({
//要跟新的数据
})
3. 删除
orderModel.remove({})
4. 增加
orderModel.create({})
官网有多种api -> 地址
http://mongoosejs.com/docs/api.html#Model
分页:
OrderModel.find().skip(page*limit).limit(limit)
说明:limit为 每页的数据的条数
skip为忽略的数据,从page*limit条后查找
找不确定的数据。
orderModel.find().or([{ buyer: id }, { seller: id }])
说明:为找到buyer的值为id或者seller的值为id的数据
联合查询
orderModel.find().populate([{path: 'seller'}, {select: 'nickname'}]);
说明:联合查询Schema中定义的要查询的表-并对返回的数据进行过滤,只返回联合查询的表中特定的数据
OrderModel.find()