首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >hapi js api设计joi验证错误

hapi js api设计joi验证错误
EN

Stack Overflow用户
提问于 2018-01-31 05:40:23
回答 1查看 276关注 0票数 1

在用mongoose设计hapi时,面临的问题是如何设计嵌套模式的joi验证。我是新手,请帮忙处理错误。

模型/ vahana.js

代码语言:javascript
运行
复制
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var vahSchema = new Schema({

vehRegNumber: { type: String, required: false, unique: true},

techSpecMeta: {

    make: String,
    model: String,
    height: Number,

    vehBodyType: String,
    seatingCapacity: Number,
    doorCountr: Number,


    stdCityMilege: Number,
    stdHighwayMilege: Number,
},


servSpecMeta: {
    assignedDriver: {
        name: String,
        contact: Number,
        license: {
            regNo: { type: String, required: false, unique: true},
            dateOfIssue: Date,
            validDate: Date,
        }
    },

    buy: {
        purchaseDate: Date,
        purchaseDealer: String,
        purchasePrice: Number,
    },

    servicing: {
        servicingDate: Date,
        serviceStation: String,
        serviceCost: Number,
    }

},

dynmSpecMeta: {
    date: Date,
    busRoute: {
        path: String,
        distance: Number,
        avgTime: Number,

    },
    distCovered: Number,
    fuelConsumption: Number,
}
})

var Vahana = mongoose.model('Vahana', vahSchema);
module.exports = Vahana;

server.js

代码语言:javascript
运行
复制
// ================ Base Setup ========================

var Hapi = require('hapi');
var server = new Hapi.Server();
var Joi = require('joi');
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/vahanaDB');

var vahModel  = require('./models/vahana');

server.connection({port: 7002});

server.register({
register: require('hapi-swagger'),
options: {
    apiVersion: "0.0.1"
}
}, function (err) {
if (err) {
    server.log(['error'], 'hapi-swagger load error: ' + err)
} else {
    server.log(['start'], 'hapi-swagger interface loaded')
}
});



// =============== Routes for our API =======================


// POST route

server.route({
method: 'POST',
path: '/api/vehicle',
config: {
    tags: ['api'],
    description: 'Save vehicle data to mongodb',
    notes: 'Save user vehicle to mongodb',
    validate: {
        payload: {

            vehRegNumber: Joi.string().required(),
            techSpecMeta.make: Joi.string().required()

        }
    }
},
handler: function (request, reply) {

    var vehicle = new vahModel(request.payload);

    vehicle.save(function (error) {
        if (error) {
            reply({
                statusCode: 503,
                message: error
            });
        } else {
            reply({
                statusCode: 201,
                message: 'User Saved Successfully'
            });
        }
    });
}
});

// =============== Start our Server =======================
server.start(function () {
console.log('Server running at:', server.info.uri);
console.log('I am running on localhost:7002');
});

运行nodemon server.js后,我将收到以下错误

techSpecMeta.make: Joi.string().required() ^

SyntaxError:意外令牌

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-31 05:52:51

如果你想要一个像"techSpecMeta.make“这样的键,它需要在引号中。

代码语言:javascript
运行
复制
 payload: {
    vehRegNumber: Joi.string().required(),
    'techSpecMeta.make': Joi.string().required()
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48535185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档