我正在为我的项目使用回收站。我为测试模型创建了一个模型' test‘和一个远程方法'createOrder’。
'use strict';
module.exports = function (Test) {
/**
*
* @param {number} amount
* @param {Function(Error)} callback
*/
Test.createOrder = function (amount, callback) {
// Add log to the logs collection
callback(null);
};
};
我使用MongoDB作为数据源。
{
"db": {
"name": "db",
"connector": "memory"
},
"paymentDS": {
"host": "localhost",
"port": 27017,
"url": "",
"database": "test",
"password": "",
"name": "testDS",
"user": "",
"useNewUrlParser": true,
"connector": "mongodb"
}
}
我希望将日志插入到测试模型中定义的createOrder远程方法的日志集合中。我怎么能这么做?
发布于 2019-07-11 22:08:37
如果您有日志收集的模型,您可以这样做:
Test.createOrder = function(amount, callback) {
// ...
Test.app.models.Log.create(/*...*/)
// ...
};
否则,您可以直接从db连接器访问日志集合:
Test.createOrder = function(amount, callback) {
// ...
Test.app.datasources.db.collection("logs").insert(/**/);
// ...
};
发布于 2019-07-12 15:32:07
为了创建自定义CRUD操作,可以使用回送远程方法实现。环回中的每个模型都是通过持久化类继承的,您可以使用其默认方法从远程方法执行CRUD操作。看看下面的例子,
创建操作
下面的示例将在MongoDB中创建文档,并在日志集合中插入记录。
Test.createOrder = function (amount, callback) {
// Inserting object into database
Test.create({amount: amount, /*data to insert*/}, function(err, data) {
// Adding logs to the logs collection
Test.app.models.Log.insert({ message: "order created", /*data to insert*/}, function(err, data) {
callback(null);
});
});
};
在持久模型中有更多方便的方法,可以在不同的情况下(如upsert
、findOrCreate
、save
等)执行创建操作。
读取操作
下面的示例将根据应用的过滤器从MongoDB检索多个文档,并在日志集合中插入记录。
Test.findOrders = function (amount, callback) {
// Finding objects from database
Test.find(/** filters - Optional **/ { where: {}, limit: 10, fields: [], include: [], order: "", skip : 1}, function(err, data) {
console.log(data);
// Adding logs to the logs collection
Test.app.models.Log.insert({ message: "orders finded", /*data to insert*/}, function(err, logData) {
callback(data);
});
});
};
这里的过滤器是完全可选的。where
用于指定条件所在的位置,您可以使用它的子过滤器(如gt
、lt
、nin
等)获取更多特定于条件的记录。fields
可用于从集合中选择特定列,include
可用于根据关系连接不同的集合。剩下的过滤器可以从他们的名字中理解。有关过滤器的更多信息,您可以检查提到的这里链接。
在持久模型中也有许多有用的方法,可以在不同的情况下(如find
、findOne
等)执行读取操作。
更新操作
下面的示例将更新MongoDB中的文档,并在日志集合中插入记录。
Test.updateOrder = function (amount, callback) {
// Updating object into database
Test.updateAttribute(/* where filter */{id: 1}, {amount: 10, /*data to update*/}, function(err, data) {
// Adding logs to the logs collection
Test.app.models.Log.insert({ message: "order updated", /*data to insert*/}, function(err, data) {
callback(null);
});
});
};
您可以使用where
过滤器的每个子过滤器来执行更新操作。同样,在持久性模型中有许多可用的方法,可以在几种不同的场景(如updateAttribute
、updateAttributes
、createUpdates
、bulkUpdate
等)中使用。
删除操作
下面的示例将从MongoDB中删除文档,并在日志集合中插入记录。
Test.deleteOrder = function (amount, callback) {
// Deleting object from database
Test.destroyById(123, function(err, data) {
// Adding logs to the logs collection
Test.app.models.Log.insert({ message: "order deleted", /*data to insert*/}, function(err, logData) {
callback(data);
});
});
};
Persistent还包含一种不同类型的方法,用于根据不同的场景(如destroyAll
、destroyById
)执行删除操作。
关于CRUD
的官方文档您还可以从下面提到的URL中找到关于CRUD操作的完整文档:
下面的链接包含了持久性模型的所有可用方法,这些方法对于应用几个BLs非常有用,
还有几种方法可以在上面的链接中执行大容量操作。
测井
已经有几个扩展可以方便地与环回连接以执行日志记录操作,其中一些扩展列出如下:
这对于记录控制台或数据库中的操作非常有用。
https://stackoverflow.com/questions/56950369
复制相似问题