使用node / mongo / express的“简单”RESTful API

时间:2015-05-27 20:09:28

标签: node.js mongodb express mongoose

我是服务器端javascript的新手,所以任何帮助都会非常感激。

我最近按照本教程https://www.youtube.com/watch?v=p-x6WdwaJco使用node.js mongodb和express构建了一个简单的RESTful API。本教程还使用名为node-restful https://github.com/baugarten/node-restful的库。 首先,我在根目录中构建了一个server.js:

// Dependencies
var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');

// Mongo DB
mongoose.connect('mongodb://localhost/rest_test');

// Express
var app = express();
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());

// Routes
app.use('/api', require('./routes/api'));

var test = require('./routes/api');

// Start Server
app.listen(3000);
console.log('API is running on port 3000')

然后我在root / routes

中创建了api.js.
// Dependencies
var express = require('express');
var router = express.Router();

// Models
var Product = require('../models/product');

// Routes
Product.methods(['get', 'put', 'post', 'delete']);
Product.register(router, '/products');

// Return router
module.exports = router;

最后,我在root / models中创建了一个名为product.js的文件:

// Dependencies
var express = require('express');
var restful = require('node-restful');
var mongoose = restful.mongoose;

// Schema
var productSchema = new mongoose.Schema({
    name: String,
    sku: String,
    price: Number,
});

// Return model
module.exports = restful.model('Products', productSchema);

这就是我的问题(我认为) - 服务器运行良好,直到我尝试在api.js的mongoose.Schema()上使用.methods()和.register()。它一直告诉我。在产品中未定义.methods。

我一遍又一遍地阅读教程,看到我的代码没有任何问题。所有库似乎都已正确安装。 Mongo正在运行......

我有一种感觉,mongoose.Schema没有正确注册,但不知道为什么一切看起来都像教程中那样 - 教程中没有类似的抱怨 - 所以我只能假设这是“我的问题“但我无法看到我出错的地方......

提前致谢....

1 个答案:

答案 0 :(得分:0)

我完全复制了您的代码,然后能够毫无问题地运行它。所以这很可能意味着您的本地环境存在一些问题。很可能是旧的/过时的包裹。

在根目录中,使用以下内容创建名为 package.json 的文件:

{
  "name": "stackoverflow-30492214",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "body-parser": "^1.12.4",
    "express": "^4.12.4",
    "mongoose": "^3.9.7",
    "node-restful": "^0.1.18"
  },
  "devDependencies": {}
}

然后,在同一目录中,在终端中运行npm clean && npm install。这应该下载/安装/构建package.json定义的依赖项。完成后,再次尝试运行服务器node server.js。您可能会收到关于mongoose包是不稳定版本的警告,但您不应该看到任何.method()或.register()未定义的错误。