2013-10-14 63 views
0

我試圖在引導程序模板中顯示我的mongodb數據。檢索貓鼬文檔元素時返回'Undefined'

api.js

var Software = require('../models/dbSoftware.js'); 
exports.show = (function(req, res) { 
Software.find({Publisher: req.params.format}, function(error, softwares) { 
    res.render('searchpage', { searchText: req.params.format, softwares: softwares}); 
}) 
}); 

軟件架構:

var mongoose = require('mongoose'); 

var softwareSchema = new mongoose.Schema({ 
    SoftwareName: String 
    , Size: String 
    , Publisher: String 
    , Product: String 
    , Version: String 
    , Language: String 
    , License_Type: String 
    , Description: String 
    , License_Key: String 
}); 
module.exports = mongoose.model('Software', softwareSchema); 

searchpage.ejs

<td><%= softwares.Product %></td> 

這將返回未定義的值。任何軟件。*返回'未定義'。

當我編輯searchpage.ejs到:

<td><%= softwares%></td> 

輸出是:

{ License_Key: 'computing', Description: 'Licensed', License_Type: 'English', Language: 'UNKNOWN', Product: 'Test Test', Publisher: 'Test', Size: '231.6MB', SoftwareName: 'Test.zip', _id: 5252c407d9b28d1e4c000001, __v: 0 } 

//這是正確的

回答

0

當使用.find()softwares將成爲所有的Array成功(error == null)查詢,無論發現多少文件:

<%= softwares.length %> 
<%= softwares[0].Product %> 

如果你只想要一個單一的文件,你需要使用.findOne()代替:

Software.findOne({Publisher: req.params.format}, function(error, softwares) { 
    // ... 
}); 
<% if (softwares != null) { %> 
    <%= softwares.Product %> 
<% } %> 

或者,您可以iterate oversoftwares

<% softwares.forEach(function (software) { %> 
    <%= software.Product %> 
<% }) %>