Tag: 水线

MongoError:TypeError:使用$或者不能读取未定义的属性“id”

我正在使用水线,并使用mongoimport命令导入数据库。 我使用本地驱动程序连接到mongo,调用.find和.aggregate。 使用$或查找多个logging时,使用前一组查询的结果。 数组看起来像 [{"\"ProductID\"": "76543"},{"\"ProductID\"": "74632"}, {"\"ProductID\"": "76534",…n}] 不要紧张的关键,这是一个临时的设置,由于文件中的控制字符用于将csv转换为json,然后mongoimporting新文件。 我应该可以对数组执行以下查询。 collection.find({$or: arrayResults }).toArray().then(function(result)… 然后我收到错误: MongoError:TypeError:无法读取未定义的属性“id” 我可以通过减小数组来阻止错误。 这不是为了强制用户的批量查询,但我不知道如何解决这个问题。 作为一种解决方法,聚合框架$匹配阶段似乎没有任何问题。 collection.aggregate([{$match: {$or: arrayResults}}}]).toArray().then(…. 这个问题是我没有在我的查询中使用“ID”,所以我不明白什么是错的。

我怎样才能做一个“或”查询在帆船上的Model.find?

我必须做一个查询,接受来自Sails中的一个字段的两个条目。 既然Sails使用ORM的水线,我也在这个问题上标记了它。 Conversions.find({status : 0} || {status : 2}).exec(function(err, convs){ // do something }); 这不起作用,有一个使用Sails / Waterline的解决scheme,或者我应该去一个自定义查询? 非常感谢

用Sails.js中的一个请求创build/更新多个logging

我想知道在一个请求中创build/更新多个logging的最佳做法是什么。 我知道我们可以使用Promise.all()来做到这一点。 但是如果我想告诉客户哪个logging成功了,哪个失败了呢? 例如,用户发布如下内容: { departmentId: 1, students: [ {name: 'John', studentId: 123}, {name: 'Mike', studentId: 124}, ] } 而我目前的解决scheme是: StudentController: var departmentId = req.param('departmentId'); var postStudents = req.param['students']; var department; var failedRecords = []; Department.findOne() .then(function (_department) { department = _department; var students = []; while (postStudents.length) { var student = postStudents.pop(); student.department = […]

如何使用SailsJS Waterline update()方法将数据添加到集合行中的两个字段

我正在为我的应用程序创build一个忘记的密码function,而我正在努力的一个关键步骤是当用户开始忘记密码处理时,将数据添加到两个忘记密码相关的字段。 字段是 1) resetPasswordToken – 一个随机生成的令牌,暂时允许用户设置一个新的密码。 2) resetPasswordExpires – 为创build一个小时而设置的date,该date创build了可更改密码的时间长度。 我到了需要更新用户行的部分(对于需要更改密码的用户),我不知道该怎么做。 我正在尝试使用SailsJS更新方法来完成此操作。 在使用update()方法更新模型之前,我可以使用如下的标准符号来实现: User.update(req.param('id'), req.body) .exec(function (err, users) { if (err) { return res.json(400, err); } res.json(users[0]); }); 这很容易,因为我一次更新整行,因此,我有我可以通过的id 。 更新整行是唯一的方法来使用更新,我发现是有据可查的。 但是,现在更难了。 我只需要更新两个字段,而当我执行此服务器端操作时,我不认为我有可用的id 。 文档没有指定如何做这样的事情。 我有他们用来注册的email地址,这是唯一的,所以应该是可以的。 我需要使用某种types的.where()我认为? 在这一点上,整个服务器端操作看起来有点像这样: forgot: function (req, res, next) { async.waterfall([ function(done) { crypto.randomBytes(20, function(err, buf) { var token = buf.toString('hex'); […]

风帆:如何从查找function返回一个值

我在js工作。 我想返回variablessequence[0].NextValue 但我没有得到它。 function AutoGenerate(tablename) { Sequence.find({TableName:tablename}).exec(function(err,sequence){ if(err) { console.log("err"); return res.negotiate(err); } else { console.log(sequence); var intCurrentNo = sequence[0].NextValue; var intNextNo = sequence[0].NextValue + sequence[0].IncrementBy; if (intNextNo < sequence[0].MinimumValue || intNextNo > sequence[0].MaximumValue) { console.log("Error While Updating UserId") return res.badRequest('Next value not between the Minimum and Maximum value'); } else { sequence[0].NextValue = intNextNo; […]

sails.js多对多查询

我正在尝试构build一个聊天应用程序。 我有一个多对多的关联。 一个房间有很多用户。 而且用户可以有很多房间。 我试图检索既有用户A(fromUserId)和用户B(toUserId)的房间。 我正在尝试这样的事情,但我知道这是不正确的: Room.find().populate('users', { where:{ id: [fromUserId, toUserId] } }).exec(function(err, rooms){ console.log(rooms); }); 这里的问题是,它返回任何房间users.id = fromUserId 或 toUserId。 我需要的是一个和查询。 任何帮助赞赏。 (:

无法更新Sails.js模型实例中的属性

在更新到Sail.js 0.10.1之后,我试图更新模型的特定实例的属性字段时出错。 我试着做User.find(),然后设置user.attribute = someValue,然后调用user.save(),并发生了同样的错误。 这是相关的代码: // TODO: Save user params (for edit/updates) save: function(req, res) { var params = req.params.all(), updateParams = {}; if (params['publicKey'] != '') { sails.log.debug('Updating public key: ' + params['publicKey']); updateParams['publicKey'] = params['publicKey']; } if (params['email'] != '') { updateParams['email'] = params['email']; } sails.log.debug(updateParams); User.update({ id: params['id'] }, updateParams, function […]

Sailsjs:如何在* update *之后build立关联模型?

我有以下控制器代码适用于索引 , 显示 , 创build方法,但更新失败,当我包含填充 – 我做错了什么? // User List index: function(req, res) { User.find() .populate('profile') .exec(function(err, users) { if (err) return res.json(err, 400); if (!users) return res.json(users, 404); res.json(users, 200); }); }, // Single User show: function(req, res) { User.findOne({ username: req.param('username') }) .populate('profile') .exec(function(err, user) { if (err) return res.json(err, 400); if (!user) […]

航行水线自动增量

好奇为什么这种行为正在发生… 当我提升帆进行testing时,我在磁盘上build立了一个testdb。 一切都放弃了,以干净的石板开始testing。 Sails.lift({ connections: { testdb: { adapter: 'sails-disk' }, }, models: { connection: 'testdb', migrate: 'drop' } }, function(err, server) … 当我在testing之前进行Model.find()时,一切都是可预测的。 但是当我做Model.create()时,它会返回从所有旧模型开始依次递增的“id”字段。 切换到'sails-memory'适配器每次都会重新开始,这很有意义,因为它实际上无法持久化。 那么,作为一个学习点,这里发生了什么?为什么?

如何在关联模型中查找()/ where()

我正在玩风帆模型协会,我很好奇,如果有可能在相关领域作出查询的基础。 例: User.js attributes:{ classes: { collection: 'Class', via: 'students' } } Class.js attributes: { type: … students: { collection: 'User', via: 'classes'} } 有没有办法根据类的类来检索一个Student类的特定类,因为现在当我使用.populate()时,所有的东西都被返回。 (也许类似于下面的逻辑) User .findOne({name: 'StudentA'}) .populate('classes') .where({'classes.type':['type1', 'type2']}) .then(….) 谢谢