Javascript NodeJS Mongoose-无法调用方法';toString';未定义的
我正在尝试将数据库中的团队名称打印到控制台,代码如下:Javascript NodeJS Mongoose-无法调用方法';toString';未定义的,javascript,mongodb,mongoose,Javascript,Mongodb,Mongoose,我正在尝试将数据库中的团队名称打印到控制台,代码如下: var Team = require('../schemas/Team').Model; app.get('/match', function(req, res) { var key = 1359407087999; // Team Key Team.findByKey(key, function(err, team) { util.log(team); if (err) {
var Team = require('../schemas/Team').Model;
app.get('/match', function(req, res) {
var key = 1359407087999; // Team Key
Team.findByKey(key, function(err, team) {
util.log(team);
if (err) {
util.log("Error occured");
}
if (!team) {
util.log("The team does not exist");
} else {
res.send("Found team: " + team.name);
}
});
});
代码在util.log(Team)
所在的位置成功获取团队。它会将其打印到控制台:
{
__v: 0,
_id: 5106e7ef9afe3a430e000007,
name: 'Team Name',
key: 1359407087999
}
在将其发送到网页时也可以这样做
但是,当我尝试将团队名称发送到网页时,我通过res.send
方法=>Found Team:undefined
…得到以下输出,当我尝试将Team.name
而不是Team
输出到控制台时,我得到错误无法调用undefined
的方法“toString”
以下是我的团队mongoose模式:
var Team = new Schema({
'key' : {
unique : true,
type : Number,
default: getId
},
'name' : { type : String,
validate : [validatePresenceOf, 'Team name is required'],
index : { unique : true }
}
});
Team.statics.findByKey = function(key, cb){
return this.find({'key' : key}, cb);
};
module.exports.Schema = Team;
module.exports.Model = mongoose.model('Team', Team);
表演队
app.get('/show/team/:key', function(req, res){
util.log('Serving request for url[GET] ' + req.route.path);
Team.findByKey(req.params.key, function(err, teamData){
util.log(teamData[0]);
if (!err && teamData) {
teamData = teamData[0];
res.json({
'retStatus' : 'success',
'teamData' : teamData
});
} else {
util.log('Error in fetching Team by key : ' + req.params.key);
res.json({
'retStatus' : 'failure',
'msg' : 'Error in fetching Team by key ' + req.params.key
});
}
});
});
名称是唯一的,因此您应该使用
findOne
而不是find
Team.statics.findByKey = function(key, cb){
return this.findOne({'key' : key}, cb);
};
这已经破坏了我在原始帖子中的其他代码,你知道为什么吗?使用find它可以工作,但使用findOne它现在不工作…删除[0]的两种情况。find返回一个文档数组(在您的情况下是团队),findOne返回一个对象。