Node.js 如何将几个POST参数传递给mongodb并获得匹配结果
我有一个MongoDB收藏书籍,包含100个文档/行。我使用POSTMAN发出一个带有两个参数“流派:科幻”和“语言:英语”的帖子请求。我想从我的收藏Node.js 如何将几个POST参数传递给mongodb并获得匹配结果,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我有一个MongoDB收藏书籍,包含100个文档/行。我使用POSTMAN发出一个带有两个参数“流派:科幻”和“语言:英语”的帖子请求。我想从我的收藏书籍中得到一个简单的json响应,文档中只包含这个值(在SQL中,我会这样做:从grore=“sci fi”和language=“english”的书籍中选择*,但我需要nodejs/express/mongodb。) Nodejs、Express和MongoDB运行正常,我已经创建了一个包含文档的集合: api.js var express =
书籍中得到一个简单的json响应,文档中只包含这个值(在SQL中,我会这样做:从grore=“sci fi”和language=“english”的书籍中选择*,但我需要nodejs/express/mongodb。)
Nodejs、Express和MongoDB运行正常,我已经创建了一个包含文档的集合:
api.js
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
Book = require('./models/books');
mongoose.connect('mongodb://localhost/booksdb');
var db = mongoose.connection;
db.on('connected', function() {
console.log('MongoDB is running');
});
app.listen(3000);
var mongoose = require('mongoose');
var booksSchema = mongoose.Schema({
genre:{
type: String,
required: true
},
language:{
type: String,
required: true
}},
{ collection: 'books'}
);
var Book = module.exports = mongoose.model('books', booksSchema);
module.exports.getBooks = function(callback, limit){
Book.find(callback).limit(limit);
}
我还可以使用console.log访问传递的参数:
app.post('/api/searchbooks', function(req, res){
console.log(req.body.genre);
console.log(req.body.language);
Book.getBooks(function(err, post){
if (err){
throw err;
}
res.json(post);
});
但我不知道如何将它们传递给mongodb并获得正确的响应(与我的搜索匹配的文档),也不知道如何将整个集合传递给100行。我看了一打mongodb和express的教程,但我搞不懂。一个有效的例子将是非常好的
books.js
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
Book = require('./models/books');
mongoose.connect('mongodb://localhost/booksdb');
var db = mongoose.connection;
db.on('connected', function() {
console.log('MongoDB is running');
});
app.listen(3000);
var mongoose = require('mongoose');
var booksSchema = mongoose.Schema({
genre:{
type: String,
required: true
},
language:{
type: String,
required: true
}},
{ collection: 'books'}
);
var Book = module.exports = mongoose.model('books', booksSchema);
module.exports.getBooks = function(callback, limit){
Book.find(callback).limit(limit);
}
一份文件:
{ "_id" : ObjectId("97542a337653a7d6bf9cca88"), "genre" : "sci fi", "language" : "english", "year": "1999", "title" : "Foo" }
在app.js中进行此更改
Book.getBooks({genre : req.body.genre, language:req.body.language }, 10, function(err, post){
if (err){
throw err;
}
res.json(post);
});
在books.js中
module.exports.getBooks = function(query,limit, callback){
Book.find(query).limit(limit).exec(callback);
}
您是否创建了mongoose数据模型/模式?查询将取决于您的Mongoo数据模型。所以,在你分享之前,没有人能回答它。我发布了更多的代码,但这不起作用,你可以完全更改它。你缺少了查询。你是说收集文档吗?我加了一个。如果不是,我不知道你的意思,对不起:(