Tag: sails.js waterline

Sailsjs MVC将来自外部API的参数映射到多个模型

我需要创build一个Shopify订单数据库,以便我可以运行高级查询和销售报告,这是shopifypipe理员区域中不能完成的。 我正在build立在帆.12和MySQL。 Shopify允许您注册一个webhook,以便每次下订单时,都会为指定的URL创build一个POST,并将正文中的订单数据作为JSON。 订购的产品是作为POST中值之一的JSON对象的数组: { "id": 123456, "email": "jon@doe.ca", "created_at": "2017-01-10T14:26:25-05:00", …//many more entires "line_items": [ { "id": 24361829895, "variant_id": 12345, "title": "T-Shirt", "quantity": 1, "price": "140.00", }, { "id": 44361829895, "variant_id": 42345, "title": "Hat", "quantity": 1, "price": "40.00", }, ] } 我需要将订单保存到订单表中,并将订单保存到line_items表中,这是一对多的关系。 一个订单可以有很多line_items(产品订购)。 有超过100个键值对由webhook发送,我保存了所有的。 我创build了我定义数据types的两个模型,所以现在我有非常长的Order.js和Line_item.js文件,而且我正在使用 line_items: { collection: 'line_item', via: 'order_id' }, 在我的Order.js和 order_id: […]

MongoDB在$ sails.js中找不到$

我正在用Sail.js和Waterline ORM创build一个简单的应用程序。 对于其中的一部分,我遵循NoSQL的数据透视表模式:每个用户都有一个数组, subscriptions所有subscriptions的频道。 我试图find订阅了特定频道ID的所有用户,使用以下内容: User.find({subscriptions: {$in: [req.param('channel')]}}).done(function (err, users) { /* … */ }); 不是每个编写的最美丽的代码行,但它应该工作。 问题是,事实并非如此。 users是一个空数组,而err为空。 他们查询实际执行的是,例如(使用节点检查器): { subscriptions: { '$in': [ '52fd1a033004de2d9bcb4980' ] } } 当这个相同的查询被用来通过umongo GUI“查找”用户时,它可以正常工作。 但是,执行该function时不会find用户。 和想法? 谢谢!

sails-mysql没有select数据库

我已经使用了这个相当多的东西,看着堆栈溢出的其他解决scheme,但没有find任何解决我的问题。 当定义一个模型使用mysql而不是磁盘时,我得到以下错误 verbose: Registering model `users` in Waterline (ORM) with definition :: { identity: 'users', tableName: 'users', connections: [ { pool: true, connectionLimit: 10, waitForConnections: true, adapter: 'sails-mysql' } ], config: { host: 'localhost', port: 3306, user: 'root', password: 'password', database: 'sailsapp' }, attributes: { name: 'string', email: 'string', phone: 'string' }, globalId: 'users', introduce: […]

SailsJS / NodeJSpipe理asynchronous性质

我在我的控制器中有一个代码,在http请求上工作,以保存用户在前端添加的post。 所以我做了一些像Model.create()。 现在发生了什么事情是在回电我想​​返回是否成功添加的post,以便我的前端可以显示适当的消息给用户。 但创build方法asynchronous工作。 以下是一个示例代码: create: function(req, res){ Activity.create(req.body).done( function(err, persistedActivity) { // Error handling if (err) { return res.json({success: false}); // The Activity could not be created! } else { return res.json({success : true}); } } ); } 但是这个代码不起作用,因为Activity.create()方法是asynchronous的。 我也在其他问题或post中阅读过。 没有任何信息表明我正在寻找的具体实现,但它确实告诉我“不要与nodejs的asynchronous性质作斗争,它只会在晚些时候受到伤害”,相信我和其他人一样,我也不想受到伤害。 我基本上需要如何处理这个问题的build议。

Nodejs中的date时间转换

我在MySQL数据库中有一个名为"event_timestamp"的DATETIME字段,它具有以下值: 2014-07-23 12:31:00 当我查询数据库时(我使用SAILS,使用了水线ORM,具体是find()函数),结果对象显示的值是“2小时” results.event_timestamp : Wed Jul 23 2014 14:31:00 GMT+0200 (EEST) 我如何处理这个问题,我尝试在Mysql和Nodejs中设置时区,但是无济于事。

根据参数Sails.js创build一个所需的属性

我有一个有两个属性的模型。 一个叫userType ,一个叫lastName 。 基本上我想要做的是:如果userType是professor那么lastName应该是必需的。 userType: { type: 'string', required: true, enum: ['professor', 'administrator'] }, lastName: { type: 'string', required: function() { return this.userType === 'professor'; } }, 为什么我不能通过必要的function? 在水线文档中甚至有一个containsvalidation的例子。 如果不可能的话,有没有其他办法可以做到这一点? 我不想在控制器上创build自定义validation,我想把所有东西都留给模型。 也许甚至使用beforeValidatecallback。 谢谢

可以航行更深层次的联系吗?

我正在搞v0.10发布的风帆,我遇到了一个令人困惑的问题。 我与我正在build设的应用程序有一个关系,这是一个简单的测验应用程序。 这个问题出现在我的模型和协会的结构上: 测验 – >问题 – >答案 测验: attributes: { questions: { collection: 'Question', via: 'quiz' } } 题: attributes: { answers: { collection: 'Answer', via: 'question' }, quiz: { model: 'Quiz' } } 回答: attributes: { question: { model: 'Question' } } 为了清楚起见,我已经遗漏了其余的模型代码。 现在的问题是,当我在api / quiz中检索资源时,问题被填充,但是没有答案。 我在某处读到,帆/水线没有嵌套的模型人口,这是真的吗? 即使我去api /问题,然后我回来的问题,但没有答案,在这种情况下,我不会把答案视为嵌套。 看来,无论我做什么,我都无法让答案填充到问题中,但是它总会在测验中填充问题。

无效的属性发送到模型。 validation问题

我使用https://gist.github.com/basco-johnkevin/8436644的validation服务,目前在提交数据时遇到了一些问题。 这似乎也许validation服务不喜欢NaN值或我可能会错过一些东西。 有任何想法吗? 我的表单: <div class="container"> <form action="/standardplacement/create" method="POST" role="form"> <div class="row-fluid"> <h2 class="form-signin-heading">Create a <em>Standard Media</em> placement</h2> <% if (req.session.flash && req.session.flash.error) { %> <% var errors = req.flash('error') %> <div class="alert alert-danger"> <button type="button" class="close" aria-hidden="true" data-dismiss="alert">&times;</button> <ul> <% Object.keys(errors).forEach(function(error) { %> <% Object.keys(errors[error]).forEach(function(error_message) { %> <% Object.keys(errors[error][error_message][0]).forEach(function(error_message_res) { %> <li><%- errors[error][error_message][0][error_message_res] %></li> […]

如何在检索数据时过滤掉列(Waterline)

我有一个列a,b,c,d的表。 但我想发送到浏览器只是来自a,b的数据。 我发现可以重写toJSON()方法,但在我看来,这是一个单行结果的解决scheme。 如何使这个工作jsons数组? 我可以使我自己的函数遍历数组,并删除不需要的属性,但我觉得应该有一个更好的解决scheme。 谢谢你的帮助。

航行参考错误:文章“模型”没有定义

我尝试通过我的控制器中的Article模型访问findOne(),但没有成功。 我有这个错误 > error: Sending 500 ("Server Error") response: > ReferenceError: Article is not defined > at Object.module.exports.createArticle (c:\Users\pisix\BizBiz\BizBizBackEnd\api\controllers\ArticleController.js:16:9) > at bound (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\node_modules\lodash\dist\lodash.js:729:21) > at routeTargetFnWrapper (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\lib\router\bind.js:179:5) > at callbacks (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:164:37) > at param (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:138:11) > at param (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:135:11) > at pass (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:145:5) > at nextRoute (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:100:7) > at callbacks (C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\node_modules\express\lib\router\index.js:167:11) > at C:\Users\pisix\AppData\Roaming\npm\node_modules\sails\lib\router\bind.js:187:7 > […]