在用mongoose设计hapi时,面临的问题是如何设计嵌套模式的joi验证。我是新手,请帮忙处理错误。
模型/ vahana.js
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
// ================ 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:意外令牌
发布于 2018-01-31 05:52:51
如果你想要一个像"techSpecMeta.make“这样的键,它需要在引号中。
 payload: {
    vehRegNumber: Joi.string().required(),
    'techSpecMeta.make': Joi.string().required()
  }https://stackoverflow.com/questions/48535185
复制相似问题