问题标签 [waterline]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
10516 浏览

javascript - 如何在 SailsJS/Waterline 中使用 Model.query() 和 Promise?

我遇到了 Sails.JS 0.9.8 的问题。我想在 Model.query() 函数中使用 Promise(我使用sails-mysql 适配器)。

此代码将起作用:

但这个不会

我对'err'和'rows'都没有定义。

它只是没有实施还是我做错了什么?如果未实现,是否有任何替代方法可以将 promise 与 .query() 一起使用?

先感谢您

0 投票
2 回答
2910 浏览

node.js - Sails.js 中的密码确认和外部模型验证

我已经和 Sails 一起玩了一天。我正试图围绕在 Sails.js 中进行广泛验证的最佳方式来思考。

这是场景:

用户输入:

  • 正确的电子邮件
  • 已经存在的用户名
  • 两个不匹配的密码

期望的结果:

要求,几个关键点:

  • 用户收到他输入的各个方面的所有错误消息(不仅仅是第一个错误消息) 。它们并不模糊(“用户名已被占用”或“用户名必须至少有 4 个字母长”比“无效用户名”更好)
  • 内置的模型验证显然不能负责检查匹配的密码确认(SRP)

我认为我需要做的:

用户控制器:

用户管理器:

用户:(型号)

用户验证器:

这是棘手的部分。我需要将特定于输入的验证(密码确认是否匹配?)与模型验证(用户名是否被采用,电子邮件地址是否有效?)结合起来。

如果有办法实例化用户模型并执行验证而不保存到 Sails/Waterline 中的数据库,我认为这将非常简单,但似乎没有那个选项。

你将如何解决这个问题?非常感谢您的帮助!

0 投票
1 回答
966 浏览

node.js - 使用 Sails.js 和 MongoDB 创建搜索

我想在 Sails.js 中创建一个搜索页面,它将通过 MongoDB 进行搜索。我知道如何做到这一点。但是,我想知道 Waterline 或任何其他选项是否可以解决拼写错误和替代拼写问题。例如。如果 MongoDB 条目是“Springfield High School”,我如何解释“Springfield High-School”或“Spring Field High School”等... '找不到任何好的文档(findLike()???)。

0 投票
1 回答
677 浏览

sails.js - 如何删除sails.js 中的1:1 关联?

目前我正在将关联属性设置为,null但这在某些情况下会引发异常?

例如。

Profile.update({user: user.id}, {user: null}, function (err, profiles) {});

有没有正确的方法来做到这一点?

0 投票
1 回答
2203 浏览

node.js - 使用sails.js和mongodb查找对象id $in子数组的文档

所以我有一个用于配方的模型,它具有“成分”的关系,这只是一个 ObjectIds 数组。当我在 mongo shell 上运行以下查询时,它工作正常并返回我的所有数据。

通过他们的水线 orm 使用sails.js,他们实际上并没有办法查询这个,或者至少通过我能找到的任何可能的谷歌搜索。因此,尝试使用本机驱动程序时,我有以下内容 -

问题是回调中返回的数据数组始终为空。如果我检查 'ings' 数组,它是一个 objectids 数组,所以我不确定为什么它不会返回任何数据。如果我在“查找”函数中删除 json 对象,它会返回所有内容。任何人都知道如何在使用sails.js 时使这个查询返回数据?

0 投票
1 回答
132 浏览

javascript - 嵌入式文档中模型的“this”变量呢?

我是 node.js 和sails 的新手,但它很简单,所以我喜欢它:) 我实际上正在使用带有MongoDB anssails-mongo 的sails Framework 0.10rc3。

我知道水线的贡献者并不喜欢模型中的嵌入式文档,如 mongodb (https://github.com/balderdashy/sails-mongo/issues/44#issuecomment-35561040)但无论如何,我想知道如何'this' 变量适用于它们以及如何检索内部数组中的当前元素。

这是一个模型示例(我们可以称之为 ProjetSpan):

在这种情况下“这个”将如何工作?'this' 是一个跨度(所以 this.end 可以工作,而不是 this.proj.end)还是 'this' 是一个 ProjetSpan(所以 this.proj.end 可以工作,但不是 this.end)?

最后,如何使 this.end(当前 span 中的变量)和 this.proj.end(当前文档关联中的变量)在这个嵌入式上下文中工作?

0 投票
1 回答
625 浏览

node.js - 自定义适配器在sails v0.10 中失败

我的适配器无法在 Sails v0.10 中注册。从我在文档中可以看到, registerCollection() 仍然是应该处理集合注册的适配器方法。但是,sails 抱怨适配器与当前版本 (0.10.0-rc4) 不兼容。

错误:这是一个有效的 Sails/Waterline 适配器吗?遇到以下错误 ::
error: Adapter is not compatible with the current version of Sails。

这很奇怪,因为我通过sails generate adapter命令使用 v0.10 创建了适配器。有人对此有任何想法吗?

0 投票
1 回答
1142 浏览

sails.js - 水线创建在影响排序顺序

我看到的症状是,在添加一个对象然后查看按 排序的列表后createdAt: 'desc',新对象位于列表的末尾,但应该位于列表的开头。我注意到日期显示为例如"Thu Mar 06 2014 10:52:56 GMT+0000 (GMT)",而其他对象的日期为"2014-03-06T10:52:56.875Z"

如果我更改以下行dql.js

然后排序顺序正确出现。

在我重新启动服务器后,这些值是正常的,大概是因为数据是从磁盘读取并在某处转换的。

我是否误解了它的工作原理以及如何通过水线添加对象?

0 投票
2 回答
2347 浏览

node.js - Sails 0.10 关联无法填充

我正在使用sails@0.10.0-rc4 中的自定义适配器来支持关联,但我无法让它们与我的适配器一起工作。我的配置是文章和统计数据之间的一对多关联。我的模型和适配器设置如下:

但是,当我尝试使用 填充时Article.find().populate('stats').exec(console.log()),我的适配器会{where: null}在我期望它接收时作为选项获得{where: {parentId: [<some-article-id>]}}。它向我返回一个文章列表,但应该从另一个模型(统计)填充的字段只是一个空列表。

我觉得这与我的适配器没有获得正确的 where 参数来搜索主键上的相关模型有关。为了进一步测试这一点,我使用sails-mongo 适配器设置了一个测试一对多关系。在这种情况下,适配器确实收到了我期望的参数,并且关联工作正常。

有谁知道为什么.populate('stats')不向我的适配器发送正确的“where”参数?

更新 3/7

因此,似乎关联中发生的事情是 SomeModel.find() 将命中适配器一次,然后 .populate('othermodel') 使用第一个请求的主键再次命中适配器。然后将两者的结果结合在一起。就我而言,由于某种未知原因,对适配器的第二次打击没有发生。

更新

最初的问题与下面评论中提到的属性命名错误有关。但是, particlebanana提到的最终填充步骤似乎仍然存在一些问题:

最后一步将:从所有返回的查询操作中获取所有查询结果,并将它们组合到内存中以构建一个可以在 exec 回调中返回的结果集。

我看到所有必需的查询现在都在触发,但它们实际上并没有填充别名。这是调用,以 gist 的形式添加了一些调试输出,以便于使用:https ://gist.github.com/jasonsims/9423170

0 投票
1 回答
150 浏览

javascript - 如何使库(例如 Q)可用于所有控制器?

我对 Sails/Node 有点陌生,但我正在使用 Q 库并行运行查询。例如,我有一个搜索结果的控制器方法,但也提供响应对象中的记录总数:

尽管 Waterline 在下面使用 Q 库,但我必须在控制器顶部需要 q 库才能使用该all方法。有没有办法让所有控制器/我的整个应用程序都可以使用 Q 库?或者我应该只在需要它的每个控制器的顶部包含 require 语句?