Tôi đã dành vài giờ theo dõi bước này xuống. Vấn đề đã đến với việc tôi sử dụng Mongoose. Tôi đã sử dụng các lược đồ Mongoose cho một số Bộ sưu tập của tôi và không sử dụng Mongoose cho người khác. Dưới đây là file chứa mã vấn đề của tôi:
// Some common MongoDb operations and data.
'use strict';
var MongoClient = require('mongodb').MongoClient;
var assert = require('assert');
var logger = require('./Logger');
var mongoose = require('mongoose');
// TODO: Take this out for production.
mongoose.set('debug, true');
var PSSharingInvitations = require('./PSSharingInvitations')
var connectedDb = null;
// Call this just once, at the start of the server.
// TODO: Need better error handling when can't initially connect. Right now have an ugly looking error when Mongo is not already started and we try to start our server.
exports.connect = function(mongoDbURL) {
MongoClient.connect(mongoDbURL, function(err, db) {
assert.equal(null, err);
if (!db) {
logger.error("**** ERROR ****: Cannot connect to MongoDb database!");
}
else {
mongoose.connect(mongoDbURL);
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
// SCHEMA's
exports.SharingInvitation = PSSharingInvitations.buildSchema(mongoose);
logger.info("Mongoose: Connected to MongoDb database");
});
connectedDb = db;
logger.info("Mongo: Connected to MongoDb database");
}
});
};
exports.db = function() {
return connectedDb;
};
// Call this just once, when the server shuts down.
exports.disconnect = function() {
};
Vấn đề hóa ra là dòng:
connectedDb = db;
đâu db là mongoose.connection
. Tức là, tôi đang sử dụng mongoose.connection
làm db của tôi cho các Bộ sưu tập MongoDB không sử dụng Mongoose. Điều này gây ra lỗi liên tục. (! Và cho đến nay làm việc)
Các sửa đổi mã như sau:
exports.connect = function(mongoDbURL) {
MongoClient.connect(mongoDbURL, function(err, db) {
assert.equal(null, err);
if (!db) {
logger.error("**** ERROR ****: Cannot connect to MongoDb database!");
}
else {
connectedDb = db;
logger.info("Mongo: Connected to MongoDb database");
mongoose.connect(mongoDbURL);
var connectedMongooseDb = mongoose.connection;
connectedMongooseDb.on('error', console.error.bind(console, 'connection error:'));
connectedMongooseDb.once('open', function() {
// SCHEMA's
exports.SharingInvitation = PSSharingInvitations.buildSchema(mongoose);
logger.info("Mongoose: Connected to MongoDb database");
});
}
});
};
Nguồn
2016-07-10 04:37:17
Tôi không thể thấy phương thức 'ObjectID.createFromHexString' ở bất kỳ đâu trong [tài liệu] (https://docs.mongodb.com/manual/reference/method/ObjectId/). Bạn đã thử chỉ đơn giản 'ObjectId ()', ví dụ: 'var id = ObjectId (" 507f1f77bcf86cd799439011 ")'? –
fracz
Tìm kiếm 'createFromHexString' trong https://mongodb.github.io/node-mongodb-native/api-bson-generated/objectid.html. Tôi đăng những gì hóa ra là vấn đề, dưới đây. Cảm ơn. –