Articles of sails.js waterline

在Model.beforeValidate中获取数组值

我正在尝试使用隐藏的input技术来读取checkboxinput的值。 轨/的ActionView /助手/表单助手/ check_box 从ActivityOverlord示例: 视图/用户/ edit.ejs <% if (user.admin) { %> <input type="hidden" name="admin" value="unchecked"> <label class="checkbox"><input type="checkbox" name="admin" checked> Admin</label> <% } else { %> <input type="hidden" name="admin" value="unchecked"> <label class="checkbox"><input type="checkbox" name="admin"> Admin</label> <% } %> API /模型/ user.js的 beforeValidate: function (values, next) { // renamed in Sails v0.10.x // beforeValidation: function […]

sailsjs – 水线能够以一种聪明的方式支持mongodb吗?

最近我一直在看sailsjs,通过查看文档http://sailsjs.org/#/documentation/concepts/ORM/Models.html 特别是这个: // From api/models/Person.js… module.exports = { attributes: { // Primitive attributes firstName: { type: 'string', defaultsTo: '' }, lastName: { type: 'string', defaultsTo: '' }, // Associations (aka relational attributes) spouse: { model: 'Person' }, pets: { collection: 'Pet' }, // Attribute methods getFullName: function (){ return this.firstName + ' ' + this.lastName; […]

在where子句中使用node-mysql中的数组

我想做一个查询,看起来像这样: "Select * FROM … WHERE name in ?" which would be equal to "Select * FROM … WHERE name in 'joe','william', …" 会有办法做这样的事吗? Model.query(query, array, function(err, result) {…}); 我尝试了以下内容: string = array.join("','") Model.query(query, string, function(err, result) {…}); 但是,这里是我的结果(由于单引号,反斜杠出现): Select * FROM … WHERE name in \'joe\',\'william\',…"

Sails.js访问模型在服务初始化

问题是: 据我所知,在初始化过程中的sails.js服务在模型之前被初始化。 有没有可能改变这种行为? 在服务之前加载模型。 如果不是,那么在这个服务初始化过程中,我怎样才能从数据库中加载特定的设置来使用它们来构build在某些服务中描述的我的类的实例呢? 一点点坚实的代码: API /模型/ Model.js console.log("Model Identified"); module.exports = { attributes: { name: { type: 'string', required: true, size: 15 }, //Some extra secret fields } }; … API /服务/ MyCoolService.js console.log('service inits'); function MyCoolService(options){ //some extraordinary constructor logic may be ommited } MyCoolService.prototype.setOptions = function(options){ //Set values for MyCoolService fields. […]

asynchronous(同步)函数/空结果的callback不能进入

所以我使用asynchronous,这个函数会输出一些ID和计数的结果,但不是“callback” getWaitingGames: function(req,res){ var me = req.session.passport.user; var rez=[]; console.log("meeeeeeeeee"); console.log(me); GivenQuestion.find().where({user_id:me}).exec(function(err,data){ var tpm_id = data[0].partie_id; console.log(tpm_id); console.log(data); async.each(data, function(d, callback) { var parties = []; if (d.partie_id != tpm_id){ console.log(d.partie_id); parties.push(d.partie_id); tpm_id=d.partie_id; GivenQuestion.count().where({ partie_id: d.partie_id, user_id: me }).exec(function(e, countRes) { console.log(countRes); if (countRes==2){ rez.push(d.partie_id); callback(); } }); } }, function(err) { if (err) { […]

SailsJS +水线并发数据库请求与承诺

我对SailsJS的吃水线并发性有些困惑。 目前我正在做这样的数据检索; var results = {}; // Get user by id 5 User.find('5', function(err, user) { results.user = user; // when it resolves, get messages Message.find({userId: '5'}, function(err, messages) { results.messages = messages; // when message query resolves, get other stuff OtherStuff.find({userId: '5'}, function(err, otherStuff) { results.otherStuff = otherStuff; res.view({results}); }); }); }); 问题是数据库调用不是并发的。 每一个请求都在先前的承诺完成之后启动。 […]

NodeJS / Waterline,在响应之前需要等待多个创build结束

在我的nodejs应用程序(使用sailsjs)中,我使用控制器来接收以.zip格式上传的多个图像,然后使用水线将它们保存在数据库中: var images = []; zipEntries.forEach(function(zipEntry) { zip.extractEntryTo(zipEntry.entryName, p, false, true); Image.create({ filename: zipEntry.name, }).exec(function(err, image){ images.push(image); }); }); res.json(images); 问题是我需要发回所有生成的图像ID(自动递增),但创build方法是asynchronous的。 有什么办法可以等待所有的创build方法结束之前,我可以发送服务器响应? 编辑:所以我find了一个工作,通过检查我得到的图像的数量,并在.exec方法中增加索引,我可以检查这是否是最后一个可执行文件,然后发送响应。 var images = [], nbValidImage = 0, i = 0; zipEntries.forEach(function(zipEntry) { zip.extractEntryTo(zipEntry.entryName, p, false, true); nbValidImage++; Image.create({ filename: zipEntry.name, }).exec(function(err, image){ i++; images.push(image); if(i == nbValidImage) { res.json(images); } }); }); […]

sails.js中的多个数据库连接,每个连接都有迁移设置

我在帆应用程序中使用两个连接:mongodb和postgresql。 对于MongoDB我想使用“改变”策略,但postgres数据库必须只读。 有没有办法做到这一点?

在蓝鸟承诺内执行asynchronous操作

所以,我一直在殴打这个几天,我很难解决什么是最好的解决办法。 我正在使用HAPI的Waterline / dogwater,并试图做一些大致的事情: wardrobe.find({WardrobeId: 5}).then(function(clothes) { //got my clothes in my wardrobe. clothes.find({Type: 'trousers'},{Kind: 'nice ones'}).then(function(trousers) { //got my nice trousers _.each(trousers, function(trouser) { //logic to see if these are my pink trousers console.log('color?', trouser.color); }); console.log('ding'); }); }); 我遇到的麻烦是代码在输出裤子颜色之前总是会ding 。 这是因为,尽我所知, _.each将使代码asynchronous。 我试图介绍承诺(蓝鸟),但没有运气。 我甚至看过发生器(Co),但是我的节点版本在v0.11之前是固定的。 我想在_.each执行一些数据库查询,将这些结果(如果有的话)返回给裤子对象,然后返回: wardrobe.find({WardrobeId: 5}).then(function(clothes) { //got my clothes in my […]

dynamic地定义并获取水线中的模型

我想知道在Waterline中是否有可能通过Node-ORM2中的名称来定义模型或获取模型。 定义: var Person = db.define("person", { name : String, surname : String, age : Number, // FLOAT male : Boolean, continent : [ "Europe", "America", "Asia", "Africa", "Australia", "Antartica" ], // ENUM type photo : Buffer, // BLOB/BINARY data : Object // JSON encoded }, { methods: { fullName: function () { return this.name […]