Node.js 无法读取属性';收集';空值(CosmosDB+;mongo+;节点)
我谨此陈辞: 代码如下:Node.js 无法读取属性';收集';空值(CosmosDB+;mongo+;节点),node.js,mongodb,azure,azure-cosmosdb,Node.js,Mongodb,Azure,Azure Cosmosdb,我谨此陈辞: 代码如下: var MongoClient = require('mongodb').MongoClient; var assert = require('assert'); var ObjectId = require('mongodb').ObjectID; var url = 'mongodb://<endpoint>:<`enter code `enter code here`here`password>@<endpoint>.docum
var MongoClient = require('mongodb').MongoClient;
var assert = require('assert');
var ObjectId = require('mongodb').ObjectID;
var url = 'mongodb://<endpoint>:<`enter code `enter code here`here`password>@<endpoint>.documents.azure.com:10255/?ssl=true';
var insertDocument = function(db, callback) {
db.collection('families').insertOne( {
"id": "AndersenFamily",
"lastName": "Andersen",
"parents": [
{ "firstName": "Thomas" },
{ "firstName": "Mary Kay" }
],
"children": [
{ "firstName": "John", "gender": "male", "grade": 7 }
],
"pets": [
{ "givenName": "Fluffy" }
],
"address": { "country": "USA", "state": "WA", "city": "Seattle" }
}, function(err, result) {
assert.equal(err, null);
console.log("Inserted a document into the families collection.");
callback();
});
};
var findFamilies = function(db, callback) {
var cursor =db.collection('families').find( );
cursor.each(function(err, doc) {
assert.equal(err, null);
if (doc != null) {
console.dir(doc);
} else {
callback();
}
});
};
var updateFamilies = function(db, callback) {
db.collection('families').updateOne(
{ "lastName" : "Andersen" },
{
$set: { "pets": [
{ "givenName": "Fluffy" },
{ "givenName": "Rocky"}
] },
$currentDate: { "lastModified": true }
}, function(err, results) {
console.log(results);
callback();
});
};
var removeFamilies = function(db, callback) {
db.collection('families').deleteMany(
{ "lastName": "Andersen" },
function(err, results) {
console.log(results);
callback();
}
);
};
MongoClient.connect(url, function(err, db) {
assert.equal(null, err);
insertDocument(db, function() {
findFamilies(db, function() {
updateFamilies(db, function() {
removeFamilies(db, function() {
db.close();
});
});
});
});
});
当我使用robomongo进行测试时,数据库可以工作,但不会与nodeJS连接。
我已尝试从azure portal重置密码并创建新的cosmosDB,似乎一切正常。对于的最新版本(v3.0.1),您需要使用以下语法连接到MongoDB,如下所示:
var MongoClient = require('mongodb').MongoClient;
var assert = require('assert');
var ObjectId = require('mongodb').ObjectID;
var url = 'mongodb://<endpoint>.documents.azure.com:10255/?ssl=true';
// ...
MongoClient.connect(url, {
auth: {
user: '<endpoint>',
password: '<password>'
}
}, function(err, client) {
assert.equal(null, err);
var db = client.db('<dbname>');
insertDocument(db, function() {
findFamilies(db, function() {
updateFamilies(db, function() {
removeFamilies(db, function() {
client.close();
});
});
});
});
});
var MongoClient=require('mongodb')。MongoClient;
var assert=require('assert');
var ObjectId=require('mongodb')。ObjectId;
var url='1〕mongodb://.documents.azure.com:10255/?ssl=true';
// ...
MongoClient.connect(url,{
认证:{
用户:“”,
密码:“”
}
},函数(错误,客户端){
assert.equal(null,err);
var db=client.db(“”);
insertDocument(数据库,函数(){
findFamilies(数据库,函数(){
updateFamilies(数据库,函数(){
removeFamilies(数据库,函数(){
client.close();
});
});
});
});
});
- 参考:
对于Mongoose(v5.0.1),您可以使用以下代码创建连接:
const mongoose = require('mongoose');
mongoose.connect('mongodb://<endpoint>.documents.azure.com:10255/databasename?ssl=true', {
auth: {
user: '<endpoint>',
password: '<password>'
}
})
.then(() => console.log('connection successful'))
.catch((err) => console.error(err));
const mongoose=require('mongoose');
猫鼬mongodb://.documents.azure.com:10255/databasename?ssl=true', {
认证:{
用户:“”,
密码:“”
}
})
。然后(()=>console.log('connection successful'))
.catch((err)=>console.error(err));
您还可以分享如何将mongoose与cosmosdb连接起来吗。这是我当前的代码。猫鼬mongodb://localhost:27017/databasename然后(()=>console.log('connection successful')).catch((err)=>console.error(err));当然,他补充道。
const mongoose = require('mongoose');
mongoose.connect('mongodb://<endpoint>.documents.azure.com:10255/databasename?ssl=true', {
auth: {
user: '<endpoint>',
password: '<password>'
}
})
.then(() => console.log('connection successful'))
.catch((err) => console.error(err));