javascript - node-restful 不将文档 "contents"保存到 MongoDb

标签 javascript node.js mongodb rest mongoose

我正在尝试使用 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);

nodemon 在运行 server.js 时的输出是

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 扩展程序填充数据库,创建了一个空文档,其中没有我以键值对形式发布的数据。名字“戴夫”

Postman output

总而言之,我通过 node-restuful 和 mongoose 将数据发送到 mongodb,但是,尽管创建了文档,但它不包含数据。谁能看出问题所在?

最佳答案

在 postman 中添加一个 header

内容类型:application/json

并且不使用表单字段,而是将其作为原始 json 发送。为我工作。

关于javascript - node-restful 不将文档 "contents"保存到 MongoDb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26853292/

相关文章:

javascript - 如何选择非空值输入并隐藏输入并显示另一个输入?

JavaScript 错误...单击按钮时未创建元素

node.js - nodejs 连接内置模块的使用-> 未找到方法

mongodb - 可靠地重新连接到 MongoDB

javascript - JSLint - 容忍低效的下标?

javascript - Chrome 扩展 : Append functions to right click menu

javascript - Meteor 助手出错

javascript - Cypress - 执行时出错 'cypress open'

MongoDB:无法更新嵌套数组

mongodb - 连接到没有 "--authenticationDatabase admin"的 mongodb 实例