从MongoDB文档中返回字段
Function To Return Field from MongoDB Document
我使用MongoDB与Node.js。我想做一个函数,我可以调用一些基本值的参数(以识别文档),然后是我希望函数返回值的字段名。
我的文档是这样的:
{
"name": "John Smith",
"email": "john.smith@gmail.com",
"phone": "555-0125"
}
我想这样调用函数:
var phone_number = GetInfo({"name":"John Smith"}, "phone");
console.log(phone_number); // This should output "555-0125"
我如何使用MongoDB的Node.js驱动程序。文档建议我将需要采取面向回调或面向承诺的方法,但我不知道这两个东西是什么意思。
这是文档中提到的承诺语法:
// Retrieve all the documents in the collection
collection.find().toArray(function(err, documents) {
test.equal(1, documents.length);
test.deepEqual([1, 2, 3], documents[0].b);
db.close();
});
注意,当find()
被调用时,它返回一个游标对象,它允许你过滤/选择/读取查询结果。由于find()
是异步(延迟执行)调用,javascript必须附加一个回调,当find()
的结果被解决时将被执行。
MDN也有更多关于Promise
对象的信息在这里进一步阅读:承诺
对于您的代码,您可以这样做:
// collection defined above this code snippet.
collection
.findOne({"name":"John Smith"})
.forEach(function(doc) { console.log(doc.phone) });
您可以使用co生成器。它的工作原理很容易理解。
//your function call
var phone_number = GetInfo({"name":"John Smith"}, {"phone":1});
//your function description
function GetInfo(query, projection) {
//using generator
co(function*() {
//connect to db
let db = yield MongoClient.connect(url);
let collectionName = db.collection(colName);
collectionName.find(query, projection).toArray((err, doc)=> {
if (err) console.log(err);
//your data
console.log(doc);
return doc;
}
db.close();
}
如果你想
相关文章:
- MongoDB-通过比较集合和对象的数组来返回现有字段的数组
- Model中的Typeahead返回空值以形成输入字段
- AngularJS-工厂中promise ID字段的返回值
- 用户提供的字段在解析登录时不返回
- 如何从所有要素返回单个字段
- ASP:代码隐藏的字段变量在从更新面板中的服务器返回时丢失值
- 即使对于非空窗体,FormData对象也返回空.对于具有2个输入字段的表单,
- 使用jquery UI next按钮提交输入字段值,php将返回结果
- 返回不同的字段名称Laravel
- 我的单选按钮没有从foreach循环中获得值,表单验证返回'必填字段'即使已检查
- 货币字段上的 parseInt 返回 NaN
- 仅返回嵌入文档列表中的某些字段
- javascript:input字段在隐藏时返回默认值
- 将字符串返回到类型为“0”的输出字段;数字“;针对用户错误javascript
- 是否可以使find()和findOne()方法只返回模式字段
- 循环遍历所有字段,如果任何一个字段的验证失败jquery,则返回false
- 在检查选中哪个按钮并从字段中获取值后返回值
- 将信息结果返回到多个输入字段
- 有条件地在返回语句中包含 json 字段
- 从MongoDB文档中返回字段