mers を使用して、mers 経由で mongoDB にデータを保存しようとしています。これは私のセットアップの抜粋です:
ファイルモデル/Plan.js
var mongoose = require('mongoose'),
Schema = mongoose.Schema,
ObjectId = mongoose.Schema.ObjectId;
var PlanSchema = new Schema({
name: String
});
var plan = module.exports.plan = mongoose.model('plan', PlanSchema);
私が持っているapp.jsで
"use strict";
/**
* Module dependencies.
*/
var express = require('express'),
routes = require('./routes'),
mongoose = require('mongoose'),
mers = require('mers');
var Plan = require('./models/Plan').Plan;
var app = module.exports = express.createServer();
// Configuration
app.configure(function () {
app.set('view engine', 'ejs');
app.set('view options', { open: '<?', close: '?>' }); // match ejs in st2
app.set('views', __dirname + '/views');
app.set('partials', __dirname + '/views/partials');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({ secret: 'your secret here' }));
app.use(app.router);
// Database Connection (this works)
uri = 'mongodb://username:password@address';
mongoose.connect(uri);
app.use('/rest', mers({mongoose: mongoose}).rest());
app.use(require('less-middleware')({ src: __dirname + '/public' }));
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function () {
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function () {
app.use(express.errorHandler());
});
// Routes
app.get('/', routes.index);
app.listen(3000);
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
呼び出してプランを作成しようとしています
curl -i -X POST -d '{"name":"foo"}' http://localhost:3000/rest/plan
結果: mongodb コレクション 'plans' に次のようなエントリが作成されます。
{
"_id": {
"$oid": "50d0f2f2234005ef27000004"
},
"__v": 0
}
Plan スキーマで定義された「name」プロパティがありません。どうしたの?