gpt4 book ai didi

node.js - mongoose 在查询 mongolab 数据库时返回空数组/

转载 作者:太空宇宙 更新时间:2023-11-04 02:49:43 25 4
gpt4 key购买 nike

我是 mongodb 和 mongoose 的新手,我正在尝试按照一本书来学习它。我在 mongolab 上有一个名为“firstdatabase”的现有数据库,其中有一个名为“parking_info”的集合,这是该集合中的一条记录:

{
"_id": {
"$oid": "559c152fa439a961c357f931"
},
"POST_ID": "354-20160",
"MS_ID": "-",
"MS_SPACEID": 0,
"CAP_COLOR": "Grey",
"METER_TYPE": "SS",
"SMART_METE": "Y",
"ACTIVESENS": "N",
"JURISDICTI": "SFMTA",
"ON_OFF_STR": "ON",
"OSP_ID": 0,
"STREET_NUM": 2016,
"STREETNAME": "CHESTNUT ST",
"STREET_SEG": 3977000,
"RATEAREA": "Area 5",
"SFPARKAREA": "Marina",
"LOCATION": {
"type": "Point",
"coordinates": [
37.8007983983,
-122.4368696024
]
}
}

我正在尝试使用 mongoose 在 Node.js 应用程序中使用此数据库。这是我的目录结构:

>models
-->parking.js
>views
-->parkings.handlebars
>credentials.ja
>app.js

在 parking.js --> 我正在创建架构。

// mongoose scehma
var mongoose = require('mongoose');
var parkingSchema = mongoose.Schema({
"POST_ID": String,
"MS_ID": String,
"MS_SPACEID": Number,
"CAP_COLOR": String,
"METER_TYPE": String,
"SMART_METE": String,
"ACTIVESENS": String,
"JURISDICTI": String,
"ON_OFF_STR": String,
"OSP_ID": Number,
"STREET_NUM": Number,
"STREETNAME": String,
"STREET_SEG": Number,
"RATEAREA": String,
"SFPARKAREA": String,
"LOCATION": {
"type": String,
"coordinates": [Number]
}
});

var Parking = mongoose.model('parking_info', parkingSchema);
module.exports = Parking;

在我的 app.js 中我有:

var mongoose = require('mongoose');
var Parking = require('./models/parking');

var opts = {
server: {
socketOptions: { keepAlive: 1 }
}
};
switch(app.get('env')){
case 'development':
mongoose.connect(credentials.mongo.development.connectionString, opts);
console.log('connected..to db');
break;
case 'production':
mongoose.connect(credentials.mongo.production.connectionString, opts);
break;
default:
throw new Error('Unknown execution environment: ' + app.get('env'));
}


app.get("/parkings", function(req, res){
Parking.find(function(err, parkings){
if(err){
console.log('error..');
return handleError(err);
}
else {
console.log('returning parkings..');
res.render( "parkings", parkings);
}

});

});

我正在尝试显示 parkings.handlebars 中的数据

<h1>Parkings</h1>
{{#each parkings}}
<div class="parking">
<h3>{{STREETNAME}}</h3>

</div>
{{/each}}

但是我的 Parking.find 返回一个空数组,有人可以帮助我理解我哪里出了问题吗?我正在关注 Ethan Brown 所著的《Web Development with Node and Express》一书

最佳答案

解决问题的另一种方法是在模型中显式定义集合名称,即 var Parking = mongoose.model('parking_info', parkingSchema, 'parking_info');。如果未指定集合名称,则使用 Mongoose 约定。

参见:http://mongoosejs.com/docs/api.html#index_Mongoose-model

Parameters:

  • name model name
  • [schema]
  • [collection] name (optional, induced from model name)
  • [skipInit] whether to skip initialization (defaults to false)

“当没有传递集合参数时,Mongoose 通过将模型名称传递给 utils.toCollectionName 方法来生成集合名称。此方法使名称复数。如果您不喜欢这种行为,请传递集合名称或设置架构集合名称选项。”

关于node.js - mongoose 在查询 mongolab 数据库时返回空数组/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31927401/

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