小编Joh*_*yHK的帖子

Mongoose总是返回一个空数组NodeJS

我尝试过使用find并且findOne两者都没有返回文档.find是在返回一个空数组findOne被返回null.err在这两种情况下null也是如此.

这是我的联系:

function connectToDB(){
    mongoose.connect("mongodb://localhost/test"); //i have also tried 127.0.0.1
    db = mongoose.connection;
    db.on("error", console.error.bind(console, "connection error:"));
    db.once("open", function callback(){
        console.log("CONNECTED");
    });
};
Run Code Online (Sandbox Code Playgroud)

这是我的架构:

var fileSchema = mongoose.Schema({
    hash: String,
    type: String,
    extension: String,
    size: String,
    uploaded: {type:Date, default:(Date.now)},
    expires: {type:Date, default:(Date.now()+oneDay)}
});
var Model = mongoose.model("Model", fileSchema);
Run Code Online (Sandbox Code Playgroud)

我的查询在这里:

Model.find({},function(err, file) {
    console.log(err)
    console.log(file);  
});
Run Code Online (Sandbox Code Playgroud)

我可以将内容上传到数据库并通过RockMongo查看,但我无法在之后获取它们.这是我第一次使用MongoDB,所以我想我只是缺少一些基础知识.任何正确方向的推动都会很棒!

mongoose mongodb node.js

18
推荐指数
1
解决办法
1万
查看次数

如何摆脱错误:"OverwriteModelError:编译后无法覆盖`undefined`模型."?

我有一个更新MongoDB中任何集合的文档的常用方法?

以下代码的文件名为Deleter.js

module.exports.MongooseDelete = function (schemaObj, ModelObject);
{
  var ModelObj = new mongoose.Model("collectionName",schemaObj);
  ModelObj.remove(ModelObject);
}
Run Code Online (Sandbox Code Playgroud)

并在我的主文件app.js中调用如下:

var ModObj = mongoose.model("schemaName", schemasObj);
var Model_instance = new ModObj();
var deleter = require('Deleter.js');
deleter.MongooseDelete(schemasObj,Model_instance);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

OverwriteModelError: Cannot overwrite `undefined` model once compiled.
    at Mongoose.model (D:\Projects\MyPrjct\node_modules\mongoose\lib\index.js:4:13)
Run Code Online (Sandbox Code Playgroud)

我只接受第二次方法通话.如果有任何人有解决方案,请告诉我.

mongoose mongodb node.js

17
推荐指数
4
解决办法
3万
查看次数

按ID删除记录?

为什么我不能通过_id删除记录?

码:

db.collection('posts', function(err, collection) {
   collection.remove({_id: '4d512b45cc9374271b00000f'});
});
Run Code Online (Sandbox Code Playgroud)

mongodb node.js node-mongodb-native

16
推荐指数
2
解决办法
2万
查看次数

在mongoose中使用UUID进行ObjectID引用

我正在使用mongoose使用Node.js,Express和MongoDB构建CRUD样式的REST服务.该服务将允许已经存在的Android应用程序的用户在线上载/同步其各个数据库的内容.

已有应用程序的数据模型使用UUID(用Java生成),它与较短的单调MongoDB样式_id字段冲突.因为数据模型已经存在并且填充了来自许多用户的数据,所以我无法将源数据转换为单调的MongoDB样式_id.这给我留下了两个我能想到的选择:1)使Mongo/Mongoose(或其他一些ODM)与完整的UUID而不是单调_ids或2)添加一个uuid字段除了mongoose模型该_id领域并与这种方法的陷阱作斗争.我试图选择#1选项并遇到ObjectID引用问题.

我最初偶然发现了mongoose-uuid,但不幸的是,这对我的用例没有用,因为它_id在创建新的Mongoose对象时覆盖了我明确设置的值.潜入插件代码,它假定一个对象是新的(通过调用检查Mongoose的.isNew值),然后_id用新的uuid 覆盖它.因为我需要在Mongo中创建新文档时保留原始uuid,所以此插件对我不起作用.

接下来,我发现了猫鼬的创造者Aaron Heckmann关于类似话题的帖子.这有帮助,但我现在遇到的问题是我不能让我的mongoose模式通过ObjectID相互引用,因为从技术上讲,它们现在使用String`_ids引用彼此.

架构示例:

var mongoose = require('mongoose');
var uuid = require('node-uuid');

var Schema = mongoose.Schema;

var trackPassSchema = new Schema({
    _id: { type: String, default: function genUUID() {
        uuid.v1()
    }},
    //Omitting other fields in snippet for simplicity
    vehicle: [
        {type: Schema.Types.ObjectId, required: true, ref: 'Vehicle'}
    ]
});

module.exports = mongoose.model('TrackPass', trackPassSchema);
Run Code Online (Sandbox Code Playgroud)

引用模式:

var mongoose = require('mongoose');
var uuid …
Run Code Online (Sandbox Code Playgroud)

rest mongoose mongodb node.js express

15
推荐指数
1
解决办法
1万
查看次数

如果变量是JSON对象,如何检入node.js?

我有变量例如

var x = "this is X value";
Run Code Online (Sandbox Code Playgroud)

如果变量是JSON对象,如何检入node.js?

json node.js

14
推荐指数
1
解决办法
3万
查看次数

在pymongo的Upsert和多旗子

我正在研究pymongo,这是我的文件:

{
   "_id": ObjectId("51211b57f07ddaa377000000"),
   "assignments": {
     "0": {
       "0": {
         "_id": ObjectId("5120dd7400a4453d58a0d0ec") 
      },
       "1": {
         "_id": ObjectId("5120dd8e00a4453d58a0d0ed") 
      },
       "2": {
         "_id": ObjectId("5120ddad00a4453d58a0d0ee") 
      } 
    } 
  },
   "password": "my_passwd",
   "username": "john" 
}
Run Code Online (Sandbox Code Playgroud)

我想取消所有这些文档的"赋值"属性.我能够通过以下方式在mongo shell上实现此目的:

db.users.update({}, {$unset: {"assignments": 1}}, false, true)
Run Code Online (Sandbox Code Playgroud)

即,我将upsert和multi标志作为最后两个参数传递给用户集合上的更新函数函数.但是我用pymongo做了这个:

db.users.update({}, {"$unset": {"assignments": 1}}, False, True)
Run Code Online (Sandbox Code Playgroud)

但是python解释器抛出了如下错误:

File "notes/assignment.py", line 34, in <module>
    db.users.update({}, {"$unset": {"assignments": 1}}, False, True)
  File "/usr/local/lib/python2.7/dist-packages/pymongo/collection.py", line 481, in update
    check_keys, self.__uuid_subtype), safe)
  File "/usr/local/lib/python2.7/dist-packages/pymongo/mongo_client.py", line 852, in _send_message
    rv = self.__check_response_to_last_error(response)
  File "/usr/local/lib/python2.7/dist-packages/pymongo/mongo_client.py", line 795, …
Run Code Online (Sandbox Code Playgroud)

python mongodb pymongo

12
推荐指数
1
解决办法
9690
查看次数

保存时承诺的Mongoose错误?

当我试图通过模型实例上的保存操作获得承诺.我收到错误:undefined is not a function

instance.save().exec().then(..)
Run Code Online (Sandbox Code Playgroud)

但是,如果我试图通过这样的模型获得承诺,那么它是有效的.

model.find(..).exec().then(..)
Run Code Online (Sandbox Code Playgroud)

没有办法获得保存行动的承诺.目前我只是通过回调来保存功能.但是,为了保持一致性,我希望以相同的方式执行所有数据库操作.

mongoose node.js

11
推荐指数
1
解决办法
1万
查看次数

无法验证Node.js中的第一个证书

我有一个Nodejs API,它使用ssl和https,所以我试图在不同的服务器上使用它来使用express-js构建一个Web应用程序.

在发出GET请求时收到以下错误:

events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: unable to verify the first certificate
    at Error (native)
    at TLSSocket.<anonymous> (_tls_wrap.js:1017:38)
    at emitNone (events.js:67:13)
    at TLSSocket.emit (events.js:166:7)
    at TLSSocket._init.ssl.onclienthello.ssl.oncertcb.TLSSocket._finishInit (_tls_wrap.js:582:8)
    at TLSWrap.ssl.onclienthello.ssl.oncertcb.ssl.onnewsession.ssl.onhandshakedone (_tls_wrap.js:424:38)
Run Code Online (Sandbox Code Playgroud)

我尝试过以下方法,但没有成功:

  • 添加require('ssl-root-cas').inject();rejectUnauthorized: false,根据请求.

  • 添加process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";我的主文件,这给了我一个Error: socket hang up

请求代码:

var service_bus = require('service_bus');
var error_engine = require('error_engine');

exports.get = function(call_back){

    function request_service() {
        require('ssl-root-cas').inject();

    var end_point = {
        host: "www.xxxx.com",
        port: "4433",
        path: "/api/xxx/xx/",
        method: "GET", …
Run Code Online (Sandbox Code Playgroud)

ssl request ssl-certificate node.js express

10
推荐指数
1
解决办法
2万
查看次数

猫鼬连接发出警告

我正在写一个mongodb连接的应用程序,并在连接到服务器时像下面收到这样的警告:

Db.prototype.authenticate方法将不再在下一个主要版本3.x中可用,因为MongoDB 3.6将仅允许对admin数据库中的用户进行身份验证,并且将不再允许套接字上的多个凭据.请使用带有身份验证凭据的MongoClient.connect进行身份验证.

我的代码就像吼叫

import mongoose from 'mongoose';
import config from './config';
mongoose.connect(config.db.uri);
Run Code Online (Sandbox Code Playgroud)

在config.js

const config = {
    name: 'API',
    version: '0.0.1',
    env: process.env.NODE_ENV || 'development',
    port: process.env.PORT || 3000,
    base_url: process.env.BASE_URL || 'http://localhost:3000',
    db: {
        uri: 'mongodb://admin:harry123@127.0.0.1:27017/ai?authSource=admin',
    },
}

export default config;
Run Code Online (Sandbox Code Playgroud)

我使用的是Node v8.0.0和mongoose 4.10.5

mongoose node.js

10
推荐指数
2
解决办法
7194
查看次数

async.each和async.eachSeries之间的区别

async.each是作为异步数组迭代工作的吗?

async.eachSeries是否作为同步数组迭代工作?(它实际上等待响应)

我问这些是因为它们都有回调但async.each就像异步数组迭代一样对ex:

//This is traditional way to iterate an array with callback functions in node.js
//Is this same with async.each ? i want to know it actually.

for (var i = 0; i < data.length; i++) {
 (function (i) {
  request(data[i],function(body){
   console.log(body)
  });
 })(i);

//if this codes and async.each are doing same things , 
//i know that async gives me an aert when all finished thats the difference.
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous node.js

9
推荐指数
2
解决办法
1万
查看次数