node-restful不将文档“内容”保存到MongoDb

我正在尝试使用NodeJS将文档保存到MongoDb。 我正在使用Express,Mongoose,Node-Restful为我辛苦工作。 但是,虽然它在MongoDb中创build文档,但它们并不是实际的内容。 我只得到

[{“_id”:“5460ab83c9e8f9481063df82”,“__v”:0},{“_id”:“5460ac00c9e8f9481063df83”,“__v”:0},{“_id”:“5460ae36c9e8f9481063df85”,“__v”:0},{ “__v”:0},{“_id”:“5460afb6be7938bc1469ae97”“__v”:0},{“_id”:“5460fe9088d68e2516cdf572”,“__v”:0},{“_id”:“5460fecfd47cba3916fba0ab”,“__v “:0},{”_id“:”5460fed5d47cba3916fba0ac“,”__v“:0},{”_id“:”5460fed8d47cba3916fba0ad“,”__v“:0},{”_id“:”5460ff079b60285016dfd0da“,”__v“ 0}]

正如你所看到的,实际的内容并没有被保存,这只是一个名字。

我的模式(models / users.js)

var restful = require('node-restful'); var mongoose = restful.mongoose; var userSchema = new mongoose.Schema({ name: String }); module.exports = restful.model('user',userSchema ); 

我的api(api / api.js)

 var express = require('express'); var router = express.Router(); var userModel = require('../models/users') userModel.methods(['get','put','post','delete']); userModel.register(router,'/user'); module.exports = router; 

和应用程序代码(server.js)

 console.log("Adding Requires"); var express = require('express'); var fs = require('fs'); var urlEncoded = require('urlencoded-request-parser'); var mongoose = require('mongoose'); var bodyParser = require('body-parser'); var override = require('method-override'); var rest = require('node-restful'); console.log("Creating Server Object"); var server = express(); server.locals.moment = require('moment'); server.set('ServerVersion', "5.0.1.7"); console.log("Server setting port"); var port = process.env.port || 1337; console.log("Connecting to MongooseDB"); mongoose.connect("mongodb://mvm-mongodb.cloudapp.net/ccslabs-main"); var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function callback () { console.log('Connected to MongoDB successfully'); }); server.disable('x-powered-by'); console.log("Server setting uses"); server.use(urlEncoded()); server.use(bodyParser.urlencoded({extended: true})); server.use(bodyParser.json()); server.use(override()); console.log("Server setting routes"); var routePath="./routes/"; fs.readdirSync(routePath).forEach(function(file) { var route=routePath+file; console.log("\tAdding routes: " + route) require(route)(server); }); console.log("\tAdding API routes"); server.use('/api',require('./api/api')); console.log("\tAdding Static Files routes"); server.use(express.static(__dirname + "/content")); console.log("Server creating sets"); server.set('view engine', 'ejs'); server.set('views', __dirname); server.listen(port); console.log("Server listening on port " + port); 

运行server.js的nodemon的输出是

 Adding Requires Creating Server Object Server setting port Connecting to MongooseDB Server setting uses Server setting routes Adding routes: ./routes/home.js Adding routes: ./routes/login.js Adding routes: ./routes/submission.js Adding routes: ./routes/testing.js Adding API routes Adding Static Files routes Server creating sets Server listening on port 1337 Connected to MongoDB successfully 

我使用Postman chrome扩展来填充数据库,创build一个空文档,而不用以关键值对的forms发布的数据。 名字“戴夫”

邮差输出

所以总结一下,我通过node-restuful和mongoose把数据发送给mongodb,尽pipe创build的文档不包含数据。 任何人都可以看到问题?

在邮差中添加一个邮件头

Content-Type : application/json

而不是使用表单域,把它作为原始的json发送。 为我工作。

我从来没有评论stackoverflow,但这是一个问题,我好几次,我似乎继续遇到这一点。 所以,我想帮助每个人。

首先将标题设置为Content-Type : application/json

不要包含在Context-type

其次select原始的inputtypes。 虽然这不是JSON教程,邮递员注意单引号和双引号之间的区别。

使用双引号,这是" ,NOT '而不是'' 。其次,双引号,如果键的值是一个string,则双引号。

总是build议钥匙应该是单个string(如有必要,请使用驼峰符号)。 作为一名所谓的编程老手,

我虽然邮递员将处理,如果JSON对象的键是variables,而不是string,因为符号,但也许这是邮递员的问题。 一张图片讲了千言万语,所以我收录了一张图片。

请注意,如果您遇到问题,请添加特定的密钥,这可能是您的模型。 去年轻的蚂蚱。 (A)(B)e(C)编码

问候!

昆汀·梅奥。

PS我与Postman没有任何关系,但我强烈build议任何人试图使用API​​。

我没有张贴足够的张贴图像,所以如果有人validation我,随时张贴重新张贴在这个页面上的图像(我只是想帮助他人)。 http://postimg.org/image/6xmto3elj/

对我而言,selectx-www-form-urlencoded,而不是默认select表单数据