在我的项目中使用的技术有Nodejs,Mongoose,Express,Type script
我想在Mongodb中创建下面提到的JSON格式集合
{
"emp_id": "001",
"login_id": "venue@abc.com",
"password": "venue123",
"role_id": 6,
"role_name": "TechLead",
"emp_ext": 456;
"leave_details": {
"leave_transactions": [
{
"leave_from_date": "14-10-2016",
"leave_from_part": "noon",
"leave_to_date": "16-10-2016",
"leave_to_part": "full",
"total_no_of_days": 2.5,
"leave_approved_by_id": "87",
"leave_approved_date": "14-10-2016",
"leave_applied_on": "13-10-2016",
"leave_status": "approved",
"leave_type": "EL",
"leave_desc": "going to hometown"
},
{
"leave_from_date": "18-11-2016",
"leave_from_part": "full",
"leave_to_date": "19-11-2016",
"leave_to_part": "full",
"total_no_of_days": 2,
"leave_approved_by_id": "115",
"leave_approved_date": "17-11-2016",
"leave_applied_on": "17-11-2016",
"leave_status": "approved",
"leave_type": "CL",
"leave_desc": "not feeling well",
"rejected_reason":""
}
]
}
}
创建在模型接口和类下面创建的上述结构
import mongoose = require("mongoose");
import IJoiningDetailsModel = require('./JoiningDetailsModel');
import ILeaveDetailsModel = require('./LeaveDetailsModel');
interface EmployeeMasterModel extends mongoose.Document {
emp_id: number;
login_id: string;
name: string;
password: string;
role_id: number;
role_name: string;
emp_ext: number;
leave_details: ILeaveDetailsModel;
}
export = EmployeeMasterModel;
import IEmployeeMasterModel = require('./interfaces/EmployeeMasterModel');
import JoiningDetailsModel = require('./JoiningDetailsModel');
import IJoiningDetailsModel = require('./interfaces/JoiningDetailsModel');
import ILeaveDetailsModel = require('./interfaces/LeaveDetailsModel');
class EmployeeMasterModel {
private employeeModel: IEmployeeMasterModel;
constructor(employeeModel: IEmployeeMasterModel) {
this.employeeModel = employeeModel;
}
get name (): string {
return this.employeeModel.name;
}
get email (): string {
return this.employeeModel.login_id;
}
get password (): string {
return this.employeeModel.password;
}
get leave_details (): ILeaveDetailsModel {
return this.employeeModel.leave_details;
}
}
Object.seal(EmployeeMasterModel);
export = EmployeeMasterModel;
import mongoose = require("mongoose");
import mongoose = require("mongoose");
import ILeaveTransactionModel = require('./LeaveTransactionModel');
interface LeaveDetailsModel extends mongoose.Document {
leaveTransactionModel: ILeaveTransactionModel;
}
export = LeaveDetailsModel;
import ILeaveDetailsModel = require('./interfaces/LeaveDetailsModel');
import ILeaveTransactionModel = require('./interfaces/LeaveTransactionModel');
class LeaveDetailsModel {
private leaveDetailsModel: ILeaveDetailsModel;
constructor(leaveDetailsModel: ILeaveDetailsModel) {
this.leaveDetailsModel = leaveDetailsModel;
}
get leaveTransactionModel (): ILeaveTransactionModel {
return this.leaveDetailsModel.leaveTransactionModel;
}
}
Object.seal(LeaveDetailsModel);
export = LeaveDetailsModel;
import mongoose = require("mongoose");
interface LeaveTransactionModel extends mongoose.Document {
leave_from_date:Date;
leave_from_part : string;
leave_to_date : Date;
leave_to_part :string;
total_no_of_days :number;
leave_type :string;
leave_desc:string;
rejected_reason:string;
leave_approved_by_id:number;
leave_approved_date:Date;
leave_applied_on:Date;
leave_status:string;
}
export = LeaveTransactionModel;
import ILeaveTransactionModel = require('./interfaces/LeaveTransactionModel');
class LeaveTransactionModel {
private leaveTransactionModel: ILeaveTransactionModel;
constructor(leaveTransactionModel: ILeaveTransactionModel) {
this.leaveTransactionModel = leaveTransactionModel;
}
get leave_from_date (): Date {
return this.leaveTransactionModel.leave_from_date;
}
set leave_from_date(leave_from_date : Date){
this.leaveTransactionModel.leave_from_date = leave_from_date;
}
get leave_from_part (): string {
return this.leaveTransactionModel.leave_from_part;
}
get leave_to_date (): Date {
return this.leaveTransactionModel.leave_to_date;
}
get leave_to_part (): string {
return this.leaveTransactionModel.leave_to_part;
}
get total_no_of_days () : number{
return this.leaveTransactionModel.total_no_of_days;
}
get leave_type (): string {
return this.leaveTransactionModel.leave_type;
}
get leave_desc (): string {
return this.leaveTransactionModel.leave_desc;
}
get rejected_reason (): string {
return this.leaveTransactionModel.rejected_reason;
}
get leave_status (): string {
return this.leaveTransactionModel.leave_status;
}
get leave_approved_by_id () : number{
return this.leaveTransactionModel.leave_approved_by_id;
}
get leave_approved_date (): Date {
return this.leaveTransactionModel.leave_approved_date;
}
get leave_applied_on (): Date {
return this.leaveTransactionModel.leave_applied_on;
}
}
Object.seal(LeaveTransactionModel);
export = LeaveTransactionModel;
import DataAccess = require('../DataAccess');
import IEmployeeMasterModel = require("./../../model/interfaces/EmployeeMasterModel");
var mongoose = DataAccess.mongooseInstance;
var mongooseConnection = DataAccess.mongooseConnection;
class EmployeeMasterSchema {
static get schema () {
// Employee leave transactions(request/approve/cancel) schema declaration
var LeaveTransactionsSchema = mongoose.Schema({
leave_from_date: {
type: Date,
required: false
},
leave_from_part: {
type: String
},
leave_to_date: {
type: Date,
required: false
},
leave_to_part: {
type: String
},
total_no_of_days: {
type: String,
required: false
},
leave_type: {
type: String,
required: false
},
leave_desc: {
type: String,
required: false
},
rejected_reason: {
type: String
},
leave_approved_by_id: {
type: Number,
required: false
},
leave_approved_date: {
type: Date
},
leave_applied_on: {
type:Date,
required: false
},
leave_status: {
type: String,
required: false
}
});
// Employee leave details schema declaration
var LeaveDetailsSchema = mongoose.Schema({
leave_transactions: {
type: [ LeaveTransactionsSchema ]
}
});
// Employee master schema declaration
var schema = mongoose.Schema({
emp_id : {
type: Number,
required: false
},
login_id: {
type: String,
required: false
},
password: {
type: String,
required: false
},
role_id: {
type: Number
},
role_name: {
type: String
},
emp_ext: {
type: Number
},
leave_details: {
type: [ LeaveDetailsSchema ]
}
});
return schema;
}
}
var schema = mongooseConnection.model<IEmployeeMasterModel>("employee", EmployeeMasterSchema.schema);
export = schema;
当我得到请求时,方法被调用,用于测试目的设置数据到ILeaveTransactionModel但是当我尝试将ILeaveTransactionModel设置为不工作时...如何将ILeaveTransactionModel设置为ILeaveDetailsModel.thanks提前
import express = require("express");
import LeaveTraBusiness = require("./../app/business/LeaveTraBusiness");
import IBaseController = require("./BaseController");
import LeaveTransactionModel = require("./../app/model/LeaveTransactionModel");
import ILeaveDetailsModel = require("./../app/model/interfaces/LeaveDetailsModel");
import ILeaveTransactionModel = require("./../app/model/interfaces/LeaveTransactionModel");
// tslint:disable-next-line:one-line
export class LeaveTraController implements IBaseController<LeaveTraBusiness>{
leaveTra :any;
create(req: express.Request, res: express.Response): void {
try {
console.log(req.body.leave_desc);
this.leaveTra = <ILeaveTransactionModel>{
leave_from_date:new Date(),
leave_from_part : "Full",
leave_to_date : new Date(),
leave_to_part :"half",
total_no_of_days :5,
leave_type :"SL",
leave_desc:"No comme",
rejected_reason:"No comme",
leave_approved_by_id:121,
leave_approved_date:new Date(),
leave_applied_on:new Date(),
leave_status:"Active"
};
console.log(JSON.stringify(this.leaveTra));
let leaveTraBusiness = new LeaveTraBusiness();
//Here i want to set leaveTra to ILeaveDetailsModel
let leaveDetailsModel : <ILeaveDetailsModel>{leaveTra};
leaveTraBusiness.create(leaveDetailsModel, (error, result) => {
if (error)
res.send({"error": "error"});
else
res.send(result);
});
}
catch (e) {
console.log(e);
res.send({"error": "error in your request"});
}
}
}
答案 0 :(得分:0)
抱歉,我确实错误地设置了#34; leaveTra&#34;来,代码解决了我的问题
让leaveDetailsModel = { leaveTransactionModel:leaveTra };