Skip to content

the api front end always return a "type" field, lost first letter in name #7

Description

@futurist

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);

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions