javascript - Mongoose 不会使用 NodeJs 将任何内容保存到数据库

标签 javascript node.js mongodb express mongoose

我有一个非常简单的代码,可以将 super 英雄的名字和力量存储到数据库中。

所有连接均正常工作。当我运行 mongod 时,我使用 --dbpath C:/nodeprojects/sankarit/data。我已经尝试使用不同的路径更改路径 50 次。

所以我的代码从客户端发送nimi和supervoima(名称,超能力),并尝试将它们添加到数据库中,但实际上数据库中没有任何反应。当我在保存函数上写 console.log("yay it Works") 时,它说它可以工作。如果我控制台登录 super 英雄,它似乎工作正常。

这是客户端:

  $http.post("api/juttu", {nimi: "besthero", supervoima: "whiskey"}).success(function(response){
    console.log(response.data);
}).error(function(){
    console.log("Error")
})

这是我的 server.js:

 var express = require('express');
var path = require('path');
var app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
mongoose.set('debug', true);

// SANKARI SCHEMA
var Sankari = require('./app/models/sankarit');

// CONTROLLERIT
var testCtrl = require('./server/testCtrl');

app.use(bodyParser.urlencoded({ extended: true}));
app.use(bodyParser.json());
app.use('/public', express.static(__dirname + '/public'));


// DB conn

// I have tried with /test, /heros, /sankariKanta, /sankarit
mongoose.connect('mongodb://127.0.0.1:27017/test');

mongoose.connection.once('connected', function() {
    console.log("Connected to database")
});

//PORTTI
var port = process.env.PORT || 8080;

// ROUTER
var router = express.Router();


app.get('/', function(req, res) {
    res.sendFile('index.html', {root: __dirname});
});

app.post("/api/juttu", testCtrl.juttu);


app.listen(port);

这是测试Ctrl:

var Sankari = require("../app/models/sankarit");

module.exports.juttu = function (req, res){

// Tried also var uusiSankari = new Sankari(req.body);
var uusiSankari = new Sankari();
uusiSankari.nimi = req.body.nimi;
uusiSankari.supervoima = req.body.supervoima;

uusiSankari.save(function(err){
   if(err){
       console.log(err);
   } else{
       // This is always showing up
       console.log("This is working!");
   }
});

};

当我尝试 console.log(req.body); 时它工作正常。

这是架构(sankarit.js):

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var SankariSchema = ({
    nimi: String,
    supervoima: String
});

module.exports = mongoose.model('Sankari', SankariSchema);

当我运行程序时, Mongoose 调试说:

Mongoose: sankaris.insert({ __v: 0, _id:    ObjectId("57ff0a649dbf169c15000001"), nimi: 'besthero', s
upervoima: 'whiskey' }) {}

因此,当我调试并控制台记录程序所做的所有事情时,它看起来就像做梦一样。我已经制作了这些 MEAN 堆栈教程,例如 5-10,并且每次数据库都正常工作。这是我第一次尝试自己编写完整的代码。我整晚都试图解决这个问题,但我完全没有得到任何结果。

最佳答案

您忘记使用架构

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var SankariSchema = Schema({
    nimi: String,
    supervoima: String
});

module.exports = mongoose.model('Sankari', SankariSchema);

关于javascript - Mongoose 不会使用 NodeJs 将任何内容保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40012453/

相关文章:

javascript - 使用 jquery 加载页面时出现的小问题

node.js - 科阿的动态路线?

使用匹配的分片键和 multiple=true 进行 MongoDB 更新

javascript - Find() 函数返回未定义 - Mongoose 和 Node.js

javascript - 在点击事件上激活脚本

node.js - 如何查询 Mongoose 中的最后更新日期

Node.js 驱动程序 "mongodb"findAndModify() 的实现 - 如何指定字段?

arrays - 在不使用 RHS 作为 Mongo 中的引用的情况下查询对象数组?

javascript - 如何获取删除(链接)图像的 URL?

javascript - csvtojson node.js(合并两个代码)