Articles of sails.js waterline sails

SailsJS:如果它有未声明的属性,则阻止Model.create()

如果包含未在api / models / YourModel中声明的属性,是否有阻止实体创build的方法? 例如,假设我使用了MongoDB,并且有这个User模型: module.exports = { attributes: { name:{type:'string'}, age:{type:'number'} } }; 我试图用这个代码创build: User.create({name:'Walter Jr',age:8,missingTest:'something'}).exec(function createCB(err,created){ console.log('should fail'); }); 另外,如果一个关系/关联到另一个模型,不应该创build失败,如果实体ID指向一个无效的实体? 也许我在validation过程中遗漏了一些东西,但到目前为止,这种行为对我来说似乎有点奇怪,如果水线有复合主键支持,那也不错。

在集合/对象中查找 – SailsJS和Waterline ORM

我使用SailsJS,所以Waterline ORM和MongoDB。 我将多个用户ID保存在一个名为Labels的集合中的一个对象中(这样一个标签可以属于多个用户)。 我在Mongo中有一个数据结构,像这样: labels: { id: … belongs_to: { **id of user**: 2 (I'm using this is for individual user ordering) } } 如果我目前是ID为101的用户 – 我想查找()label.belongs_to中存在101的所有标签条目。 我search了文档,但无法find如何做到这一点。 我试过(没有运气)类似于: Label.find().where({ belongs_to: {'contains' : user_id}) 这是解决这个问题的最好方法吗?如果是的话,我怎样才能通过Sails实现呢?

SailsJS / Waterline不能在Postgres中创build模型

我试图将我的Sails JS应用程序部署到标准的Ubuntu 14.04.3 VM上。 现在,我无法连接我的SailsJS实例与PostgreSQL服务器实例。 SailsJS服务器和PostgreSQL服务器都运行在同一个VM中。 我从我的Sails JS日志得到以下输出: MySailsServer-0 Sending 500 ("Server Error") response: Error (E_UNKNOWN) :: Encountered an unexpected error error: relation "recording" does not exist at Connection.parseE (/home/vmuser/MySailsServer/node_modules/sails-postgresql/node_modules/pg/lib/connection.js:539:11) at Connection.parseMessage (/home/vmuser/MySailsServer/node_modules/sails-postgresql/node_modules/pg/lib/connection.js:366:17) at Socket.<anonymous> (/home/vmuser/MySailsServer/node_modules/sails-postgresql/node_modules/pg/lib/connection.js:105:22) at emitOne (events.js:77:13) at Socket.emit (events.js:169:7) at readableAddChunk (_stream_readable.js:146:16) at Socket.Readable.push (_stream_readable.js:110:10) at TCP.onread (net.js:523:20) 看起来好像我的Recording模型没有在数据库中创build。 我检查了Postgre日志以获取更多信息。 以下是cat /var/log/postgresql/postgresql-9.3-main.log的输出: […]

水线(Sails.js):AND条件

我正在使用mongodb和sails.js查询包含torrent文件标题的模型。 但是我无法使用“AND”条件执行水线查询。 我已经用几种方法尝试过了,但是大部分都是空的或简单的,永远不会返回。 例如数据库包含一个条目: "title": "300 Rise Of An Empire 2014 720p BluRay x264-BLOW [Subs Spanish Latino] mkv" 逐行添加每个查询参数时: var query = Hash.find(); query = query.where({ "title": { "contains": "spanish" } }); query = query.where({ "title": { "contains": "2014" } }); query = query.where({"or": [ { "title": { "contains": "720p" } }, { "title": { […]

Sails服务返回MongoDb的结果,当没有水线协会存在,但是当它们存在时失败

我正在用MongoDb构build一个sails.js api作为我的db。 这些是我的模型(为了这个问题而简化): models/Passport.js简化: identifier: { type: 'string' }, owner: { model: 'User', required: true }, models/User.js简化: username: { type: 'string', unique: true }, passports: { collection: 'Passport', via: 'owner' } 问题 在sails.js服务loginfunction中,我首先尝试从User集合中获取用户名。 sails.models.user.findOne({username: 'demo'}).exec(function onExec(error, user) { user; //contains user info } 到现在为止还挺好。 然后,当用户被抓取(这是成功的),我抓住他的user.id,并尝试从护照集合取回他的护照。 sails.models.passport.findOne({owner:user.id}).exec(function onExec(error, passp) { if(passp==undefined) //puppies dying in this line!!!! […]

风帆无法返回或大型结果集错误

我绕过ORM并使用Model.query函数来查询并返回PostgreSQL中的“大”结果集。 查询返回大约200万行。 当直接从postgres运行查询时,大概会在20秒左右返回。 从sails执行查询失败时失败。 可以返回的行数是否有限制?

Sailsjs Postgres NULL原始查询

我想在创build错误报告之前确保这不是用户错误 使用sails-postgresql适配器我有一个查询(我已经为此问题的目的下沉了)想要处理一个NULL值,但我得到一个错误,不pipe我怎么写查询。 我已经尝试了不同的变体,但是你应该得到我想要在这里做的事情: parent = req.param('parent') or null Route.query 'SELECT * FROM route WHERE parent '+(if not parent then 'is' else '=')+' $1', [parent], (err, routes)-> console.log(err, routes) if err return res.json(400, [error: sails.__('Database.connect'), _error: err]) res.json(routes.rows) 上面总是传递数据的一些变化总是会出错的。 一个简单的修复是 parent = req.param('parent') or null values = [] if(parent) values.unshift(parent) Route.query 'SELECT * FROM route WHERE […]

为什么水线callback不会触发?

我正在使用模型中的Sails,它是ORM来执行MongoDB查询和操作。 我得到的问题是,对于一些查询方法,它的callback是永远不会被调用。 数据库操作完成,但callback不会出现。 下面的代码片段是模型查询API的控制器方法的一部分,这就是为什么我使用response对象。 LineUp.update({ id: request.param('id') }, { players: [], budgetLeft: 60000000 }). exec(function (err, lineup) { console.log("Should happen"); return err ? response.send(500) : response.json(lineup); }); 所以,我已经阅读了Sails文档 ,看来我实际上是按照它应该做的,但是它不会工作。 由于不工作,我的意思是callbackist没有被执行,我永远不会看到应该发生 ,然后任何响应被发回到客户端,客户端达到502超时。 编辑 我可以注意到,发现这是一个sails-mongo问题。 我在package.json首先使用了"sails-mongo": "^0.10.6"作为依赖项,并且在前一版本中获得了mongodb作为dev依赖项。 我testing了邮递员的整个代码,我不能注意到任何问题。 npm安装运行后,我开始注意到它失败,然后我发现这是callback问题。 在^0.11.2 sails-mongo更新到^0.11.2我可以看到它是如何回报增益的。 但是,我可以看到其他模型查询时,它不工作。 在升级服务器(可悲的是不工作),当它失败了,我有帆mongo ^0.10.8和2.0.33模块。 我更新到最新版本,特别是sails-mongo到0.11.x分支。 我真的不仅需要解决这个问题,而且要知道原因。 我试图复制错误,但现在它正在工作,而不是两天。 编辑2(语法错误或错误?) 我不能通过尝试不同的模块版本来复制错误。 但是,也奇怪,我已经确定哪个代码风格不工作(没有callback发生)。 没有执行callback,导致超时: LineUp.update({ id: request.param('id') }, { players: […]

在Sails.js中从PostgreSQL获取BYTEA

我在处理Sails.js中的PostgreSQL BYTEAtypes时遇到了问题。 表定义(是的,创build二进制PK是奇怪的,但some_data总是很小): CREATE TABLE data_blobs ( some_data BYTEA PRIMARY KEY, my_date_time TIMESTAMP WITH TIME ZONE NOT NULL); 模型configuration如下所示: module.exports = { tableName: 'data_blobs', autoCreatedAt: false, autoUpdatedAt: false, autoPK: false, attributes: { some_data: { type: 'binary', primaryKey: true }, my_date_time: 'datetime', }; 当我使用node-postgres(pg)从node.js查询表时,结果包含了使用some_data的节点缓冲区,这非常容易使用。 但是,当我从Sails.js查询表使用这样的代码: DataBlobs.find().then(function(result){ console.log('Result: '); console.log(result); }); 结果如下所示: { some_data: { '0': 1, […]

如何在mongodb的风帆中find指定的字段?

在MySQL中,我可以通过使用以下命令检索指定的列: User.find({select:['email']})….. 现在我正在移动到mongodb,我试过了: User.find({select:['email']})….. User.find({},{email:1})….. User.find({},{fields: {email:1}})…. 但是他们都没有工作。 我怎么能在MongoDB中做到这一点? 顺便说一句:我可以通过使用官方的mongodb驱动程序来做到这一点,它非常简单,并且与API文档完全匹配,所以我正在重新思考应该使用官方驱动程序( 我不想浪费时间来查询和解决问题这 ),但我不想失去吃水线的能力和灵活性。 任何build议或意见是赞赏。 db.collection('user').find({},{email:1})