Articles of mongodb

MongoDB RangeError:尝试写入外部缓冲区边界

我一直没有收到这个错误,但对于特定的数组。 我正在尝试使用node.js mongodb本机驱动程序插入一个JSON对象到MongoDB集合中。 这个JSON对象有几个string属性和一个大的string数组属性。 数组可能有成千上万的string项目。 我的JSON看起来像这样 { FileName :"504-2345.txt", SIMs :["8931440400012","893144040001","4000130360507",………] } 任何想法,当MongoDB抛出RangeError:尝试写外部缓冲区边界? 请build议 下面的方法在Mongodb中插入数据 Insert: function (data, type, callback) { MongoClient.connect(url, function (err, db) { // logger.log("info","Before Inserting documents into "+type +" documents =>"+data.length); if (err) { logger.log("error", err); } var collection = db.collection(type); // Insert some documents collection.insertOne(data, function (err, result) { if […]

如何在NodeJs中手动更新多个Mongo文档?

我有一个在MongoDB中的users集合。 我需要为每个用户生成一个令牌并将其保存到数据库中: var crypto = require('crypto'); db.users.find({}).exec(function(users){ users.forEach(function(user){ user.token = crypto.randomBytes(32).toString('hex'); user.save(); }); }); 我总是对asynchronous方法感到困惑,只是无法理解它们是如何工作的…所以这段代码在save()调用完成之前就不存在了。 你将如何使它工作? 你将如何等待所有的save() call并打印Done! 控制台? 谢谢!

无法连接到服务器 – 迁移分析服务器iOS

我正在学习以下教程: https ://www.raywenderlich.com/128313/parse-server-tutorial,我已经成功完成了将数据迁移到mLab以及设置分析服务器的步骤。 我运行这个curl命令 $ curl -X GET \ -H "X-Parse-Application-Id: <myAppId>" \ -H "Content-Type: application/json" \ -d '{}' \ http://localhost:1337/parse/classes/_User 它返回我的所有用户的JSON。 这一步之后,教程说运行应用程序并发布一些数据。 但是,这是我卡住,我试图login时,得到以下错误代码, [Error]: Could not connect to the server. (Code: 100, Version: 1.12.0) [Error]: Could not connect to the server. (Code: 100, Version: 1.12.0) 。 我按照教程中的指示configuration了我的应用程序密钥和服务器url。 let configuration = ParseClientConfiguration { $0.applicationId = […]

如何减lessif语句的数量

您好我自学MEAN堆栈,并有一个关于如何减less如果在我的代码检查的问题。 基本上这是由用户填写他/她的设置页面,然后点击input我们然后发送数据到服务器,所以我们可以更新mongo。 唯一的办法,我似乎得到这个工作,允许用户编辑某些领域,而不是所有是确保发送到服务器的数据不等于空,但肯定必须有一个更好的方法,然后通过运行如果每个领域的声明。 有问题的代码是这样的 //user.username = req.body.username; if ( age != null) { user.age = age; } if ( bio != null) { user.bio = bio; } if ( location != null) { user.location = location; } if ( team != null) { user.team = team; } if ( tags != null) { user.tags = […]

Mongoose / keystonejs:唯一字段,除非字段为空

我有一个电子邮件字段,我想要独特的电子邮件。 我也想有一个空的领域的可能性。 如果电子邮件为空/空/不存在,我不希望它检查唯一性。 这是我在Keystone中定义的列表模式: Book.add({ number: { type: Types.Number }, email: { type: Types.Email, initial: true, index: true, unique: true }, token: { type: Types.Text }, title: { type: Types.Text, initial: true }, author: { type: Types.Text, initial: true }, name: { type: Types.Text, initial: true }, dedication: { type: Types.Textarea, initial: true }, image: […]

返回Model.create(arr).exec()不工作在mongoose

我听说exec“返回一个承诺”,所以我使用exec它做asynchronous调用。 这个问题激发了我的另一个问题 。 评论员说我的代码不工作,因为: 您正在同步使用asynchronous代码 我试图通过使用下面的代码来解决这个问题。 不知道这个代码是否会使它不同步,但我听说承诺有帮助。 所以我有这个,我不能创build(保存)的数据,但我可以删除它。 为什么不能像我一样使用相同的模式来create ? var Comp = require("./models/company.js"); var arr = [ {name : "comp1",industry : "industry1", ranking: 20}, {name : "comp2",industry : "industry2", ranking: 5}, {name : "comp3",industry : "industry3", ranking: 10} ] Comp.find({}).exec() .then(function(docs){ return Comp.remove({}).exec() .then(function(){ console.log("deleted") }) }) .then(function(){ return Comp.create(arr).exec() .then(function(data){ console.log(data) }) }) […]

mongoose聚合:返回不_id字段

这些是我的文件: {shopId: "aaa", customerId: "bbb", customerName: "xxx", value: 12} {shopId: "aaa", customerId: "ccc", customerName: "yyy", value: 12} {shopId: "aaa", customerId: "bbb", customerName: "xxx", value: 12} {shopId: "ddd", customerId: "bbb", customerName: "xxx", value: 12} 我想知道给定客户在选定的店铺中花了多less钱。 我知道该怎么做: Docs.aggregate( [{ $match: { shopId: selectedShop } }, { $group: { _id: "$customerId", totalVisits: { $sum: 1 }, totalValue: { […]

sortingMongoose中的一个子文档

我正试图sorting来自Mongoose的输出存储在一个子文档中的date。 我相信这可以在客户端更容易完成,但是我想限制在服务器资源上的延迟,并延迟加载子文档,而不是一次加载所有子文档。 我正在开发一个私人消息function。 我有一个名为Conversations定义的架构,我有另一个称为消息定义的架构。 他们的代码如下: const mongoose = require('mongoose'); const ChatSchema = new mongoose.Schema({ messageBody: { type: String, required: true }, from: { type: String, required: true } }, { timestamps: true // Saves createdAt and updatedAt as dates. createdAt will be our timestamp. }); const ConversationSchema = new mongoose.Schema({ participants: [String], messages: [ChatSchema] }); […]

节点服务器中的javascript语法错误

问题是,当我启动服务器时,我得到下面列出的错误。 我对JavaScript非常陌生,这是由于JavaScript或Nodejs版本的差异吗? 我也尝试更改var更新为[]而不是{} ,但获取服务器启动,但它不会更新/从我们的MongoDB删除数据。 如果有帮助, Recipes.findOneAndUpdate的“食谱”是一个Mongoose模式。 这是来自server.js的函数: app.post("/updaterecipe", function(req, res) { var id = req.body.recipeID; console.log("Updating recipe " + id); var recipeName = req.body.recipeName; var categoryID = req.body.categoryID; var recipeInstructions = req.body.recipeInstructions; var ingredientIDs = req.body.ingredientIDs; var options = {new: false}; var update = {recipeName, categoryID, recipeInstructions, ingredientIDs}; console.log(update); Recipes.findOneAndUpdate({recipeID: id}, update, options, function(err) { […]

Node / Mongoose – 如果数组在更新期间不存在,则无法在数组中创build对象

所有。 这从昨天起一直困扰我,任何帮助将不胜感激。 我的用户模型有其他模型的数组,如下所示: var userSchema = new Schema({ addresses : [{ type: mongoose.Schema.Types.ObjectId, ref: 'Address' }] 现在,在我的控制器中运行更新函数时,我想更新一个对象,如果它已经存在于数组中,或者创build一个新的,如果它不是。 我是,在地址的实例中,使用模型中的addressType属性来检查地址是否已经存在于数组中。 在我的usersController:创buildfunction: function createAddress(req, res){ User.findOne({ user_id: req.params.id}, function(err, user){ Address.create(req.body, function(err, address){ user.addresses.push(address) }) }) } 这里是更新函数的一个片段: function updateUser (req, res) { console.log("updating user in back end") User.findOneAndUpdate({user_id: req.params.id}, req.body, function(err, user){ if(err) throw err Address.findOne({address_id: req.params.id}, […]