-
Notifications
You must be signed in to change notification settings - Fork 15
Open
Description
the api front end always return a "type" field, lost first letter in name
POST /formtype with below JSON:
{"data":{"type":"formtype","attributes":{"name":"form1"}}}
The returned type become ormtypes as below:
{"links":{"self":"http://localhost:4000/formtype"},"data":{"id":"56779ce958f5c1393e73e1b9","type":"ormtypes","attributes":{"name":"form1","updateAt":"2015-12-21T06:32:09.818Z","createAt":"2015-12-21T06:32:09.817Z","desc":"","mainKey":"_id","title":""},"relationships":{"createBy":{"data":null},"updateBy":{"data":null}}}}
Source code as below:
./common contains a mongoose instance
./models/formtype.js file as below:
'use strict'
var mongoose = require('mongoose')
var common = require('../common')
var _ObjectId = mongoose.Schema.Types.ObjectId
var ObjectId = mongoose.Types.ObjectId
var Mixed = mongoose.Schema.Types.Mixed
var formTypeSchema = mongoose.Schema({
name:{type:String},
title:{type:String, default:''},
mainKey:{type:String, default:'_id'},
desc:{type:String, default:''},
createAt:{ type: Date, default: function(){ return new Date() } },
createBy:{type:_ObjectId , ref:'Person' },
updateAt:{ type: Date, default: function(){ return new Date() } },
updateBy:{type:_ObjectId , ref:'Person' },
template: Mixed,
dom: Mixed,
})
var formTypeModel = common.db.model('formtype', formTypeSchema)
module.exports = formTypeModel
./apiref/formtype.js file as below:
var common = require('../common')
module.exports = {
urlTemplates: {
"self": common.host + "/formtype/{id}",
"relationship": common.host + "/formtype/{ownerId}/relationships/{path}"
}
}
index.js file as below:
'use strict';
var path = require('path')
, express = require('express')
, API = require('json-api')
, APIError = API.types.Error
, mongoose = require('mongoose')
, common = require('./common')
var models = {
Formtype: require('./models/formtype'),
}
var adapter = new API.dbAdapters.Mongoose(models);
var registry = new API.ResourceTypeRegistry({
formtype: require('./apidef/formtype'),
}, { dbAdapter: adapter });
var Controller = new API.controllers.API(registry);
// Initialize the automatic documentation.
var Docs = new API.controllers.Documentation(registry, {name: 'Example API'});
// Initialize the express app + front controller.
var app = express();
var Front = new API.httpStrategies.Express(Controller, Docs);
var apiReqHandler = Front.apiRequest.bind(Front);
// Enable CORS. Note: if you copy this code into production, you may want to
// disable this. See https://en.wikipedia.org/wiki/Cross-origin_resource_sharing
app.use(function(req, res, next) {
res.set('Access-Control-Allow-Origin', '*');
next();
})
app.get("/", Front.docsRequest.bind(Front));
app.route("/:type(people|formtype)")
.get(apiReqHandler).post(apiReqHandler).patch(apiReqHandler);
app.route("/:type(people|formtype)/:id")
.get(apiReqHandler).patch(apiReqHandler).delete(apiReqHandler);
app.route("/:type(people|formtype)/:id/relationships/:relationship")
.get(apiReqHandler).post(apiReqHandler).patch(apiReqHandler).delete(apiReqHandler);
app.use(function(req, res, next) {
Front.sendError(new APIError(404, undefined, 'Not Found'), req, res);
});
app.listen(4000);
Metadata
Metadata
Assignees
Labels
No labels