我在我的应用程序中定义了以下架构(node.js w/express): 以及应该检索这些条目的路由,这些条目的trending设置为true : 但是,当我尝试按trending字段进行过滤时,它总是返回一个空数组,即使我的集合中有项目的trending设置为true 。 我尝试用单引号和 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我查看了这个受欢迎的问题 ,但似乎并没有解决我的问题,因此我将发布此问题。
我目前有一个使用猫鼬的express.js服务器文件,该文件一直返回一个空数组。 我不知道它是否可能是由异步问题引起的,而且我不知道该用什么来表明我已连接到数据库。
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const PORT = process.env.PORT || 8080;
//Mongoose stuff
mongoose.connect('mongodb+srv://excelsiorAdmin:Mysecretpassword@excelsiorcluster-zakfd.mongodb.net/test?retryWrites=true', { useNewUrlParser: true, dbName: 'excelsiorDB'});
const dbConnection = mongoose.connection;
dbConnection.on('error', console.error.bind(console, 'connection error:'));
dbConnection.once('open', function() {
console.log('connected to the database');
let charSchema = new mongoose.Schema({
imageURL: String,
company: String,
name: String,
civName: String,
alignment: String,
firstDebut: String,
abilities: Array,
teams: Array,
desc: String
});
let Char = mongoose.model('Char', charSchema, 'chars');
//root
app.get('/', (req, res, next) => res.send('Welcome to the API!'));
//get all characters
app.get('/chars', (req, res, next) => {
console.log('getting all characters');
Char.find(function (err, chars) {
if (err) {
res.status(404).send(err);
console.log('there was an error');
};
console.log(chars);
res.send(chars);
});
});
//get heroes
app.get('/chars/heroes', (req, res, next) => {
Char.find({alignment: "Hero"}, function (err, chars) {
if (err) {
res.status(404).send(err);
};
res.send(chars);
});
});
});
app.listen(PORT, () => console.log(`This API is listening on port ${PORT}!`));
mongoose.model会将要查找的集合设置为等于模型名称的小写,复数形式。
let Char = mongoose.model('Char', charSchema);
这将寻找“字符”集合。 但是,如果您要连接的数据库没有名称与猫鼬默认名称相同的集合,它将从不存在的集合中返回结果。 为了确保在不匹配的集合中找到正确的集合,您必须手动输入集合名称作为第三个参数:
let Char = mongoose.model('Char', charSchema, "excelsiorCollection");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.