Skip to content

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

@futurist

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

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