将 mongoose 与预先存在的 mongo 集合连接
Posted
技术标签:
【中文标题】将 mongoose 与预先存在的 mongo 集合连接【英文标题】:interfacing mongoose with a preexisting mongo collections 【发布时间】:2013-07-01 13:50:27 【问题描述】:我已经查了一段时间了,我被卡住了。我还提到了this 问题和this 问题并尝试了它,但我无法让它运行。
这是我的项目的简要概述: 我有一个 python 脚本,每天从服务器上的一些日志中解析数据。每个日志都是一个 python 对象,它存储在一个集合中,在 mongoDB 的 db 'stabilitylogs' 中具有相应的日期。
我现在已经安装了节点和猫鼬,我正在尝试从名为 - 130702 的特定集合中提取此数据。我收到以下错误:
C:\node_app\node_modules\mongodb\lib\mongodb\connection\server.js:570
抛出错误; ^ ReferenceError: 架构未定义
我的 stablelog.js 看起来像这样:
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/stabilitylogs');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback ()
var rackSchema=new Schema(
_id: type: String ,
Headend:
Name: String,
Rack:
TestInfo:
ScriptStart: String,
TotalReboots: String,
ScriptLoopCount: String,
ScriptName: String,
ScriptStop: String,
SystemName: String,
TotalSTBs: String,
PerReboots: String,
RunTime: String,
BuildVer: String
,
StbData: [
Status: String,
UpTime: String,
DBType: String,
IP: String,
DBVersion: String,
RebootData: String,
MAC: String,
MWApp: String,
OS: String
,],
Number: String
,
collection: '130702');
var doc = mongoose.model(rackschema, '130702');
doc.find();
);
我对此真的很陌生,并且确定我的代码中有很多错误,但我真的需要一些帮助。 我正在使用 MSI 安装程序和 nodeJS - v0.10.12 在 Windows 7 上运行我的整个应用程序 - 安装了 mongodb ver2.2.4。我通过编写 package.json 文件使用 npm install 安装了 mongodb 和 mongoose 模块。
非常感谢任何帮助。另外,如果需要更多信息,请告诉我。
【问题讨论】:
尝试new mongoose.Schema
而不是new Schema
。
@JohnnyHK:谢谢。它似乎仍然无法正常工作! ://
【参考方案1】:
除非您的文件中已经有var Schema = mongoose.Schema;
,否则您需要像JohnnyHK 所说的那样使用new mongoose.Schema
。此外,如果您希望查询立即执行,猫鼬模型上的 find method 应该看起来像这样。
doc.find(, function(err,collection)
//do something with the collection
);
【讨论】:
这似乎不起作用。 :( 我尝试检查它是否能够从数据库中提取数据。我得到一个“0”作为集合的长度,即使它不是空的。我哪里出错了?var MongoClient = require('mongodb').MongoClient; //connect to db MongoClient.connect("mongodb://localhost:27017//test", function(err, db) if(!err) console.log("we are connected"); var collection = db.collection('movies'); collection.find().toArray(function(err, items) console.log(items.length);); );
抱歉格式化!我不知道如何正确编辑它。以上是关于将 mongoose 与预先存在的 mongo 集合连接的主要内容,如果未能解决你的问题,请参考以下文章
使用Mongoose(ORM)将多个应用程序与一个mongo数据库连接