gpt4 book ai didi

javascript - 获取从 nodeJS + Express 返回的空响应

转载 作者:可可西里 更新时间:2023-11-01 10:24:49 26 4
gpt4 key购买 nike

如果这不符合社区标准,我深表歉意,但请注意,我已尽力而为。

我在从 MongoDB 实例获取内容的 API 中返回 JSON 响应时遇到问题

基本上我有以下文件来处理 nodejs 服务器 (server.js):

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var Person = require('./models/people');

mongoose.connect('mongodb://localhost/testdb');

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

var port = process.env.PORT || 8080;
var router = express.Router();

router.use(function (req,res,next) {
console.log('something going on');
next();
})

router.get('/', function (req,res) {
res.status(500).json({
error: 'unauthorized'
});
});

router.route('/getPeople').get(function (req,res){
Person.find(function (err,people) {
console.log('err: ' , err);
console.log('people: ' , people);
if (err)
res.send(err)
res.json(people);
})
})

app.use('/api',router);

app.listen(port);
console.log('server started on port : ' , port);

模型如下(people.js):

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

var PeopleSchema = new Schema({
name: String,
surname: String
});

module.exports = mongoose.model('Person',PeopleSchema)

我的数据库正确填充了一个值,如果我使用 mongo shell (db.People.find()) 访问它,我会得到正确的结果。相反,使用代码,它不起作用。

最佳答案

您需要在 find() 中指定条件或搜索条件对象 方法,它在您的代码中丢失。您只包含了回调函数。尝试重写路由方法并更改模型名称以反射(reflect)数据库名称:

people.js('./models/people'):

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

var PeopleSchema = new Schema({
name: String,
surname: String
});
module.exports = mongoose.model('People', PeopleSchema);

或者如果您希望将模型名称保留为 Person,您可以将 collectionName 作为 model() 函数参数中的第三个参数传递:

module.exports = mongoose.model('Person', PeopleSchema, 'People');

或作为模式定义中的属性:

var PeopleSchema = new Schema({
name: String,
surname: String
}, { collection: 'People' });

module.exports = mongoose.model('Person', PeopleSchema);

服务器(server.js):

/* if using the renamed People model */
router.route('/getPeople').get(function (req,res){
People.find({}, function (err, people) {
console.log('err: ' , err);
console.log('people: ' , people);
if (err)
res.send(err)
res.json(people);
});
});

或通过执行查询:

/* if using the renamed People model */
router.route('/getPeople').get(function (req,res){
People.find().exec(function (err, people) {
console.log('err: ' , err);
console.log('people: ' , people);
if (err)
res.send(err)
res.json(people);
});
});

关于javascript - 获取从 nodeJS + Express 返回的空响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35080689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com