0

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」プロパティがありません。どうしたの?

4

1 に答える 1

0

エラーは JavaScript コードにあるのではなく、curl リクエストにあります。

curl -X POST -H "Content-Type: application/json" -d '{"name":"foo"}' http://localhost:3000/rest/Plan

https://stackoverflow.com/a/1836922/449436に感謝

于 2012-12-20T06:34:19.613 に答える