尽管id存在于集合中,但搜索函数永远不会返回结果
问题描述:
我正在研究nodejs并使用mongoose,我正在对_id和函数进行简单搜索,但不会返回结果,尽管id存在于集合中。尽管id存在于集合中,但搜索函数永远不会返回结果
App.js文件
var express = require('express');
var session = require('express-session');
var controllers = require('./controllers');
var mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/test', function(err){
if(err){
console.log('mongodb could not connect', err);
return err;
}
console.log('Mongodb Connected ..!')
});
var app = express();
var http = require('http').Server(app);
var port = process.env.PORT || 3030;
app.use('/assets', express.static(__dirname + '/public'));
app.set('view engine', 'ejs');
app.use(session({
secret: 'somekey',
resave: false,
saveUninitialized: true
}));
controllers.html(app);
controllers.api(app);
http.listen(port);
api.js文件
var Game = require('../models/game');
app.post('/api/gotobingo75', jsonParser, function(req, res){
Game.findById('59260b9a0067b336a0002237', function(err, g_data){
console.log('here you are', g_data); // Never gets here No matter what
});
});
游戏集合架构
var mongoose = require('mongoose');
var Schema = mongoose.Schema,
ObjectId = Schema.ObjectId;
var childSchema = new Schema({ user: 'string', pattern:'String'});
var gameSchema = new Schema({
room_id : ObjectId,
users : [childSchema],
title : String,
text : String,
deleted : Boolean,
});
var collectionName = 'gameCol'
var Game = mongoose.model('game', gameSchema,collectionName);
module.exports = Game;
奇怪的是搜索开始有时工作,但90%的时间它不是加工。过去3天我一直在寻找这个问题,但没有运气。请帮助
答
FindById方法将一个对象作为第一个参数。你应该改变你像下面这样:
Game.findById({_id: ' your object id'} , some function(err, game){
//some code
})
上面的代码将在你的游戏数据库中搜索,并返回一个对象,如果它发现一个或一个空的对象,如果它没有。
答
findById
始终以价值ObjectId()
类型,以便始终在您使用findById
它应该是一个ObjectId()
不是string
只是刺痛转换为ObjectId
如下,并尝试将工作。
var Object = new ObjectId('59260b9a0067b336a0002237');
Game.findById(object, function(err, g_data){
console.log('here you are', g_data); // Never gets here No matter what
});
如果你console.log(err)你有什么收获吗? – reedb89
没有。即使尝试过尝试catch,我使用visual studio代码来通过调试做一步,但它没有得到任何数据。 – Gurveer
你可以在app.post()里面记录req.body吗?我真的没有看到太多可以在这里出错的地方。我引用文档时唯一注意到的是var Game = mongoose.model('game',gameSchema)应该是参数。我无法找到一个模型需要3个参数的例子。 http://mongoosejs.com/docs/index.html – reedb89