我对服务器端的javascript完全陌生,所以任何帮助都是非常感谢的。
最近,我遵循了本教程https://www.youtube.com/watch?v=p-x6WdwaJco,使用node.js、mongodb和node.js构建了一个简单的node.js API。本教程还使用了一个名为节点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')
然后我在根/路由中创建了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;
最后,我在根/模型中创建了一个名为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);
这就是我的问题所在(我认为)--服务器运行正常,直到我尝试使用.methods()和.register()在mongoose.Schema()上使用api.js。它一直告诉我,.methods在Product中是未定义的。
我已经一遍又一遍地阅读了这个教程,我的代码没有任何问题。所有库似乎都已正确安装。蒙戈在跑..。
我有一种感觉,mongoose.Schema没有正确注册,但我不知道为什么一切看起来都像教程一样-在教程中没有类似的抱怨-所以我只能假设这是“我的问题”,但我只是不知道我哪里出了问题……
提前谢谢..。
发布于 2015-05-27 19:16:59
我准确地复制了您的代码,然后能够运行它,没有任何问题。因此,这很可能意味着您的本地环境中存在一些问题。很可能是旧的/过时的包。
在根目录中,创建一个名为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()未定义错误。
https://stackoverflow.com/questions/30492214
复制