我正在尝试使用NodeJS将文档保存到MongoDb.
我正在使用Express,Mongoose,Node-Restful来为我做艰苦的工作.但是,尽管它确实在MongoDb中创建了文档,但它们并不是实际内容.我只能得到
[
{
“_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扩展填充数据库,创建一个空文档而没有以键值对的形式发布的数据.名字“戴夫”
总而言之,我通过node-restuful和mongoose将数据发送到mongodb,但是,虽然创建了文档,但它不包含数据.有谁能看到这个问题?
解决方法:
在邮递员中添加标题
Content-Type:application / json
而不是使用表单字段,以原始json发送它.为我工作.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。